-
1
module BloggerStructs
-
1
class Blog < ActionWebService::Struct
-
1
member :url, :string
-
1
member :blogid, :string
-
1
member :blogName, :string
-
end
-
1
class User < ActionWebService::Struct
-
1
member :userid, :string
-
1
member :firstname, :string
-
1
member :lastname, :string
-
1
member :nickname, :string
-
1
member :email, :string
-
1
member :url, :string
-
end
-
end
-
-
-
1
class BloggerApi < ActionWebService::API::Base
-
1
inflect_names false
-
-
1
api_method :deletePost,
-
:expects => [ {:appkey => :string}, {:postid => :int}, {:username => :string}, {:password => :string},
-
{:publish => :bool} ],
-
:returns => [:bool]
-
-
1
api_method :getUserInfo,
-
:expects => [ {:appkey => :string}, {:username => :string}, {:password => :string} ],
-
:returns => [BloggerStructs::User]
-
-
1
api_method :getUsersBlogs,
-
:expects => [ {:appkey => :string}, {:username => :string}, {:password => :string} ],
-
:returns => [[BloggerStructs::Blog]]
-
-
1
api_method :newPost,
-
:expects => [ {:appkey => :string}, {:blogid => :string}, {:username => :string}, {:password => :string},
-
{:content => :string}, {:publish => :bool} ],
-
:returns => [:int]
-
end
-
-
-
1
class BloggerService < TypoWebService
-
1
web_service_api BloggerApi
-
1
before_invocation :authenticate
-
-
1
def deletePost(appkey, postid, username, password, publish)
-
1
Article.destroy(postid)
-
1
true
-
end
-
-
1
def getUserInfo(appkey, username, password)
-
1
BloggerStructs::User.new(
-
:userid => username,
-
:firstname => "",
-
:lastname => "",
-
:nickname => username,
-
:email => "",
-
:url => this_blog.base_url
-
)
-
end
-
-
1
def getUsersBlogs(appkey, username, password)
-
[BloggerStructs::Blog.new(
-
:url => this_blog.base_url,
-
:blogid => this_blog.id,
-
:blogName => this_blog.blog_name
-
1
)]
-
end
-
-
1
def newPost(appkey, blogid, username, password, content, publish)
-
4
title, categories, body = content.match(%r{^<title>(.+?)</title>(?:<category>(.+?)</category>)?(.+)$}mi).captures rescue nil
-
-
4
article = Article.new
-
4
article.body = body || content || ''
-
4
article.title = title || content.split.slice(0..5).join(' ') || ''
-
4
article.published = publish
-
4
article.author = username
-
4
article.published_at = Time.now
-
4
article.user = @user
-
4
article.allow_comments = this_blog.default_allow_comments
-
4
article.allow_pings = this_blog.default_allow_pings
-
4
article.text_filter = this_blog.text_filter
-
4
article.save
-
-
4
if categories
-
2
categories.split(",").each do |c|
-
4
article.categories << Category.find_by_name(c.strip) rescue nil
-
end
-
end
-
-
4
article.id
-
end
-
-
end
-
1
module MetaWeblogStructs
-
1
class Article < ActionWebService::Struct
-
1
member :description, :string
-
1
member :title, :string
-
1
member :postid, :string
-
1
member :url, :string
-
1
member :link, :string
-
1
member :permaLink, :string
-
1
member :categories, [:string]
-
1
member :mt_text_more, :string
-
1
member :mt_excerpt, :string
-
1
member :mt_keywords, :string
-
1
member :mt_allow_comments, :int
-
1
member :mt_allow_pings, :int
-
1
member :mt_convert_breaks, :string
-
1
member :mt_tb_ping_urls, [:string]
-
1
member :dateCreated, :time
-
end
-
-
1
class MediaObject < ActionWebService::Struct
-
1
member :bits, :string
-
1
member :name, :string
-
1
member :type, :string
-
end
-
-
1
class Url < ActionWebService::Struct
-
1
member :url, :string
-
end
-
end
-
-
-
1
class MetaWeblogApi < ActionWebService::API::Base
-
1
inflect_names false
-
-
1
api_method :getCategories,
-
:expects => [ {:blogid => :string}, {:username => :string}, {:password => :string} ],
-
:returns => [[:string]]
-
-
1
api_method :getPost,
-
:expects => [ {:postid => :string}, {:username => :string}, {:password => :string} ],
-
:returns => [MetaWeblogStructs::Article]
-
-
1
api_method :getRecentPosts,
-
:expects => [ {:blogid => :string}, {:username => :string}, {:password => :string}, {:numberOfPosts => :int} ],
-
:returns => [[MetaWeblogStructs::Article]]
-
-
1
api_method :deletePost,
-
:expects => [ {:appkey => :string}, {:postid => :string}, {:username => :string}, {:password => :string}, {:publish => :int} ],
-
:returns => [:bool]
-
-
1
api_method :editPost,
-
:expects => [ {:postid => :string}, {:username => :string}, {:password => :string}, {:struct => MetaWeblogStructs::Article}, {:publish => :int} ],
-
:returns => [:bool]
-
-
1
api_method :newPost,
-
:expects => [ {:blogid => :string}, {:username => :string}, {:password => :string}, {:struct => MetaWeblogStructs::Article}, {:publish => :int} ],
-
:returns => [:string]
-
-
1
api_method :newMediaObject,
-
:expects => [ {:blogid => :string}, {:username => :string}, {:password => :string}, {:data => MetaWeblogStructs::MediaObject} ],
-
:returns => [MetaWeblogStructs::Url]
-
-
end
-
-
-
1
class MetaWeblogService < TypoWebService
-
1
web_service_api MetaWeblogApi
-
1
before_invocation :authenticate
-
-
1
def getCategories(blogid, username, password)
-
2
Category.find(:all).collect { |c| c.name }
-
end
-
-
1
def getPost(postid, username, password)
-
2
article = Article.find(postid)
-
-
2
article_dto_from(article)
-
end
-
-
1
def getRecentPosts(blogid, username, password, numberOfPosts)
-
3
Article.find(:all, :order => "created_at DESC", :limit => numberOfPosts).collect{ |c| article_dto_from(c) }
-
end
-
-
1
def newPost(blogid, username, password, struct, publish)
-
5
article = Article.new
-
5
article.body = struct['description'] || ''
-
5
article.title = struct['title'] || ''
-
5
article.author = username
-
5
article.published_at = struct['dateCreated'].to_time.getlocal rescue Time.now
-
5
article.published = publish
-
5
article.user = @user
-
-
# Movable Type API support
-
5
article.allow_comments = struct['mt_allow_comments'] || this_blog.default_allow_comments
-
5
article.allow_pings = struct['mt_allow_pings'] || this_blog.default_allow_pings
-
5
article.extended = struct['mt_text_more'] || ''
-
5
article.excerpt = struct['mt_excerpt'] || ''
-
5
article.text_filter = TextFilter.find_by_name(struct['mt_convert_breaks'] || this_blog.text_filter)
-
5
article.keywords = struct['mt_keywords'] || ''
-
-
5
if !article.save
-
1
raise article.errors.full_messages * ", "
-
end
-
-
4
if struct['categories']
-
3
Category.find(:all).each do |c|
-
3
article.categories << c if struct['categories'].include?(c.name)
-
end
-
end
-
-
4
article.id.to_s
-
end
-
-
1
def deletePost(appkey, postid, username, password, publish)
-
1
Article.destroy(postid)
-
1
true
-
end
-
-
1
def editPost(postid, username, password, struct, publish)
-
3
article = Article.find(postid)
-
3
article.body = struct['description'] || ''
-
3
article.title = struct['title'] || ''
-
3
article.published = publish
-
3
article.author = username
-
3
article.published_at = struct['dateCreated'].to_time.getlocal unless struct['dateCreated'].blank?
-
-
# Movable Type API support
-
3
article.allow_comments = struct['mt_allow_comments'] || this_blog.default_allow_comments
-
3
article.allow_pings = struct['mt_allow_pings'] || this_blog.default_allow_pings
-
3
article.extended = struct['mt_text_more'] || ''
-
3
article.excerpt = struct['mt_excerpt'] || ''
-
3
article.keywords = struct['mt_keywords'] || ''
-
3
article.text_filter = TextFilter.find_by_name(struct['mt_convert_breaks'] || this_blog.text_filter)
-
-
3
if struct['categories']
-
3
article.categorizations.clear
-
3
Category.find(:all).each do |c|
-
3
article.categories << c if struct['categories'].include?(c.name)
-
end
-
end
-
-
3
::Rails.logger.info(struct['mt_tb_ping_urls'])
-
3
article.save
-
3
true
-
end
-
-
1
def newMediaObject(blogid, username, password, data)
-
1
resource = Resource.create(:filename => data['name'], :mime => data['type'], :created_at => Time.now)
-
1
resource.write_to_disk(data['bits'])
-
-
1
MetaWeblogStructs::Url.new("url" => this_blog.file_url(resource.filename))
-
end
-
-
1
def article_dto_from(article)
-
9
MetaWeblogStructs::Article.new(
-
:description => article.body,
-
:title => article.title,
-
:postid => article.id.to_s,
-
:url => article.permalink_url,
-
:link => article.permalink_url,
-
:permaLink => article.permalink_url,
-
:categories => article.categories.collect { |c| c.name },
-
:mt_text_more => article.extended.to_s,
-
:mt_excerpt => article.excerpt.to_s,
-
:mt_keywords => article.tags.collect { |p| p.name }.join(', '),
-
:mt_allow_comments => article.allow_comments? ? 1 : 0,
-
:mt_allow_pings => article.allow_pings? ? 1 : 0,
-
9
:mt_convert_breaks => (article.text_filter.name.to_s rescue ''),
-
:mt_tb_ping_urls => article.pings.collect { |p| p.url },
-
9
:dateCreated => (article.published_at.utc rescue '')
-
)
-
end
-
end
-
1
module MovableTypeStructs
-
1
class ArticleTitle < ActionWebService::Struct
-
1
member :dateCreated, :time
-
1
member :userid, :string
-
1
member :postid, :string
-
1
member :title, :string
-
end
-
-
1
class CategoryList < ActionWebService::Struct
-
1
member :categoryId, :string
-
1
member :categoryName, :string
-
end
-
-
1
class CategoryPerPost < ActionWebService::Struct
-
1
member :categoryName, :string
-
1
member :categoryId, :string
-
1
member :isPrimary, :bool
-
end
-
-
1
class TextFilter < ActionWebService::Struct
-
1
member :key, :string
-
1
member :label, :string
-
end
-
-
1
class TrackBack < ActionWebService::Struct
-
1
member :pingTitle, :string
-
1
member :pingURL, :string
-
1
member :pingIP, :string
-
end
-
end
-
-
-
1
class MovableTypeApi < ActionWebService::API::Base
-
1
inflect_names false
-
-
1
api_method :getCategoryList,
-
:expects => [ {:blogid => :string}, {:username => :string}, {:password => :string} ],
-
:returns => [[MovableTypeStructs::CategoryList]]
-
-
1
api_method :getPostCategories,
-
:expects => [ {:postid => :string}, {:username => :string}, {:password => :string} ],
-
:returns => [[MovableTypeStructs::CategoryPerPost]]
-
-
1
api_method :getRecentPostTitles,
-
:expects => [ {:blogid => :string}, {:username => :string}, {:password => :string}, {:numberOfPosts => :int} ],
-
:returns => [[MovableTypeStructs::ArticleTitle]]
-
-
1
api_method :setPostCategories,
-
:expects => [ {:postid => :string}, {:username => :string}, {:password => :string}, {:categories => [MovableTypeStructs::CategoryPerPost]} ],
-
:returns => [:bool]
-
-
1
api_method :supportedMethods,
-
:expects => [],
-
:returns => [[:string]]
-
-
1
api_method :supportedTextFilters,
-
:expects => [],
-
:returns => [[MovableTypeStructs::TextFilter]]
-
-
1
api_method :getTrackbackPings,
-
:expects => [ {:postid => :string}],
-
:returns => [[MovableTypeStructs::TrackBack]]
-
-
1
api_method :publishPost,
-
:expects => [ {:postid => :string}, {:username => :string}, {:password => :string} ],
-
:returns => [:bool]
-
end
-
-
-
1
class MovableTypeService < TypoWebService
-
1
web_service_api MovableTypeApi
-
-
1
before_invocation :authenticate, :except => [:getTrackbackPings, :supportedMethods, :supportedTextFilters]
-
-
1
def getRecentPostTitles(blogid, username, password, numberOfPosts)
-
1
Article.find(:all,:order => "created_at DESC", :limit => numberOfPosts).collect do |article|
-
1
MovableTypeStructs::ArticleTitle.new(
-
:dateCreated => article.created_at,
-
:userid => blogid.to_s,
-
:postid => article.id.to_s,
-
:title => article.title
-
)
-
end
-
end
-
-
1
def getCategoryList(blogid, username, password)
-
1
Category.find(:all).collect do |c|
-
1
MovableTypeStructs::CategoryList.new(
-
:categoryId => c.id,
-
:categoryName => c.name
-
)
-
end
-
end
-
-
1
def getPostCategories(postid, username, password)
-
1
Article.find(postid).categorizations.collect do |c|
-
1
MovableTypeStructs::CategoryPerPost.new(
-
:categoryName => c.category.name,
-
:categoryId => c.category_id.to_i,
-
:isPrimary => c.is_primary
-
)
-
end
-
end
-
-
1
def setPostCategories(postid, username, password, categories)
-
2
article = Article.find(postid)
-
2
article.categories.clear if categories != nil
-
-
2
for c in categories
-
3
category = Category.find(c['categoryId'])
-
3
article.add_category(category, c['isPrimary'])
-
end
-
2
article.save
-
end
-
-
1
def supportedMethods()
-
9
MovableTypeApi.api_methods.keys.collect { |method| method.to_s }
-
end
-
-
# Support for markdown and textile formatting dependant on the relevant
-
# translators being available.
-
1
def supportedTextFilters()
-
1
TextFilter.find(:all).collect do |filter|
-
3
MovableTypeStructs::TextFilter.new(:key => filter.name, :label => filter.description)
-
end
-
end
-
-
1
def getTrackbackPings(postid)
-
1
article = Article.find(postid)
-
1
article.trackbacks.collect do |t|
-
1
MovableTypeStructs::TrackBack.new(
-
:pingTitle => t.title.to_s,
-
:pingURL => t.url.to_s,
-
:pingIP => t.ip.to_s
-
)
-
end
-
end
-
-
1
def publishPost(postid, username, password)
-
1
article = Article.find(postid)
-
1
article.published = true
-
1
article.save
-
end
-
end
-
1
class TypoWebService < ActionWebService::Base
-
1
attr_accessor :controller
-
-
1
def initialize(controller)
-
104
@controller = controller
-
end
-
-
1
def this_blog
-
23
controller.send(:this_blog)
-
end
-
-
1
protected
-
-
1
def authenticate(name, args)
-
30
method = self.class.web_service_api.api_methods[name]
-
-
30
h = method.expects_to_hash(args)
-
30
raise "Invalid login" unless @user=User.authenticate(h[:username], h[:password])
-
end
-
end
-
1
class AccountsController < ApplicationController
-
-
1
before_filter :verify_config
-
1
before_filter :verify_users, :only => [:login, :recover_password]
-
-
1
def index
-
2
if User.count.zero?
-
1
redirect_to :action => 'signup'
-
else
-
1
redirect_to :action => 'login'
-
end
-
end
-
-
1
def login
-
17
if session[:user_id] && session[:user_id] == self.current_user.id
-
2
redirect_back_or_default :controller => "admin/dashboard", :action => "index"
-
2
return
-
end
-
-
15
@page_title = "#{this_blog.blog_name} - #{_('login')}"
-
-
15
if request.post?
-
14
self.current_user = User.authenticate(params[:user][:login], params[:user][:password])
-
-
14
if logged_in?
-
5
session[:user_id] = self.current_user.id
-
-
5
if params[:remember_me] == "1"
-
1
self.current_user.remember_me unless self.current_user.remember_token?
-
1
cookies[:auth_token] = {
-
:value => self.current_user.remember_token,
-
:expires => self.current_user.remember_token_expires_at,
-
:httponly => true # Help prevent auth_token theft.
-
}
-
end
-
5
add_to_cookies(:typo_user_profile, self.current_user.profile_label, '/')
-
-
5
self.current_user.update_connection_time
-
5
flash[:notice] = _("Login successful")
-
5
redirect_back_or_default :controller => "admin/dashboard", :action => "index"
-
else
-
9
flash.now[:error] = _("Login unsuccessful")
-
9
@login = params[:user][:login]
-
end
-
end
-
end
-
-
1
def signup
-
9
@page_title = "#{this_blog.blog_name} - #{_('signup')}"
-
9
unless User.count.zero? or this_blog.allow_signup == 1
-
2
redirect_to :action => 'login'
-
2
return
-
end
-
-
7
@user = User.new(params[:user])
-
-
7
if request.post?
-
4
@user.password = generate_password
-
4
session[:tmppass] = @user.password
-
4
@user.name = @user.login
-
4
if @user.save
-
4
self.current_user = @user
-
4
session[:user_id] = @user.id
-
-
4
redirect_to :controller => "accounts", :action => "confirm"
-
return
-
end
-
end
-
end
-
-
1
def recover_password
-
4
@page_title = "#{this_blog.blog_name} - #{_('Recover your password')}"
-
4
if request.post?
-
3
@user = User.find(:first, :conditions => ["login = ? or email = ?", params[:user][:login], params[:user][:login]])
-
-
3
if @user
-
1
@user.password = generate_password
-
1
@user.save
-
1
flash[:notice] = _("An email has been successfully sent to your address with your new password")
-
1
redirect_to :action => 'login'
-
else
-
2
flash[:error] = _("Oops, something wrong just happened")
-
end
-
end
-
end
-
-
1
def logout
-
4
flash[:notice] = _("Successfully logged out")
-
4
self.current_user.forget_me
-
4
self.current_user = nil
-
4
session[:user_id] = nil
-
4
cookies.delete :auth_token
-
4
cookies.delete :typo_user_profile
-
4
redirect_to :action => 'login'
-
end
-
-
1
private
-
1
def generate_password
-
5
chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a
-
5
newpass = ""
-
40
1.upto(7) { |i| newpass << chars[rand(chars.size-1)] }
-
5
return newpass
-
end
-
-
1
def verify_users
-
24
redirect_to(:controller => "accounts", :action => "signup") if User.count == 0
-
24
true
-
end
-
-
1
def verify_config
-
43
redirect_to :controller => "setup", :action => "index" if ! this_blog.configured?
-
end
-
end
-
1
class Admin::BaseController < ApplicationController
-
1
cattr_accessor :look_for_migrations
-
1
@@look_for_migrations = true
-
1
layout 'administration'
-
1
before_filter :login_required, :except => [ :login, :signup ]
-
1
before_filter :look_for_needed_db_updates, :except => [:login, :signup, :update_database, :migrate]
-
-
1
private
-
1
def look_for_needed_db_updates
-
220
if Migrator.offer_migration_when_available
-
redirect_to :controller => '/admin/settings', :action => 'update_database' if Migrator.current_schema_version != Migrator.max_schema_version
-
end
-
end
-
end
-
1
require 'find'
-
-
1
class Admin::CacheController < Admin::BaseController
-
1
def index
-
1
@cache_size = 0
-
1
@cache_number = 0
-
-
1
FileUtils.mkdir_p(TypoBlog::Application.config.action_controller.page_cache_directory) unless File.exists?(TypoBlog::Application.config.action_controller.page_cache_directory)
-
-
1
if request.post?
-
begin
-
PageCache.sweep_all
-
flash.now[:notice] = _("Cache was successfully sweeped")
-
rescue
-
flash.now[:error] = _("Oops, something wrong happened. Cache could not be cleaned")
-
end
-
end
-
-
1
Find.find(TypoBlog::Application.config.action_controller.page_cache_directory) do |path|
-
1
if FileTest.directory?(path)
-
1
if File.basename(path)[0] == ?.
-
Find.prune
-
else
-
1
next
-
end
-
else
-
@cache_size += FileTest.size(path)
-
@cache_number += 1
-
end
-
end
-
end
-
-
end
-
1
class Admin::CategoriesController < Admin::BaseController
-
1
cache_sweeper :blog_sweeper
-
-
2
def index; redirect_to :action => 'new' ; end
-
6
def edit; new_or_edit; end
-
-
1
def new
-
respond_to do |format|
-
format.html { new_or_edit }
-
format.js {
-
@category = Category.new
-
}
-
end
-
end
-
-
1
def destroy
-
3
@record = Category.find(params[:id])
-
3
return(render 'admin/shared/destroy') unless request.post?
-
-
1
@record.destroy
-
1
redirect_to :action => 'new'
-
end
-
-
1
private
-
-
1
def new_or_edit
-
5
@categories = Category.find(:all)
-
#@category = Category.find(params[:id])
-
-
5
if params[:id].nil?
-
1
@category=Category.new
-
else
-
4
@category = Category.find(params[:id])
-
end
-
-
5
@category.attributes = params[:category]
-
5
if request.post?
-
2
respond_to do |format|
-
4
format.html { save_category }
-
2
format.js do
-
@category.save
-
@article = Article.new
-
@article.categories << @category
-
return render(:partial => 'admin/content/categories')
-
end
-
end
-
2
return
-
end
-
3
render 'new'
-
end
-
-
1
def save_category
-
2
if @category.save!
-
2
flash[:notice] = _('Category was successfully saved.')
-
else
-
flash[:error] = _('Category could not be saved.')
-
end
-
2
redirect_to :action => 'new'
-
end
-
-
end
-
1
require 'base64'
-
-
1
module Admin; end
-
1
class Admin::ContentController < Admin::BaseController
-
1
layout "administration", :except => [:show, :autosave]
-
-
1
cache_sweeper :blog_sweeper
-
-
1
def auto_complete_for_article_keywords
-
3
@items = Tag.find_with_char params[:article][:keywords].strip
-
3
render :inline => "<%= raw auto_complete_result @items, 'name' %>"
-
end
-
-
1
def index
-
20
@search = params[:search] ? params[:search] : {}
-
-
20
@articles = Article.search_with_pagination(@search, {:page => params[:page], :per_page => this_blog.admin_display_elements})
-
-
20
if request.xhr?
-
render :partial => 'article_list', :locals => { :articles => @articles }
-
else
-
20
@article = Article.new(params[:article])
-
end
-
end
-
-
1
def new
-
54
new_or_edit
-
end
-
-
1
def edit
-
8
@article = Article.find(params[:id])
-
8
unless @article.access_by? current_user
-
1
redirect_to :action => 'index'
-
1
flash[:error] = _("Error, you are not allowed to perform this action")
-
1
return
-
end
-
7
new_or_edit
-
end
-
-
1
def destroy
-
5
@record = Article.find(params[:id])
-
-
5
unless @record.access_by?(current_user)
-
1
flash[:error] = _("Error, you are not allowed to perform this action")
-
1
return(redirect_to :action => 'index')
-
end
-
-
4
return(render 'admin/shared/destroy') unless request.post?
-
-
2
@record.destroy
-
2
flash[:notice] = _("This article was deleted successfully")
-
2
redirect_to :action => 'index'
-
end
-
-
1
def insert_editor
-
3
editor = 'visual'
-
3
editor = 'simple' if params[:editor].to_s == 'simple'
-
3
current_user.editor = editor
-
3
current_user.save!
-
-
3
render :partial => "#{editor}_editor"
-
end
-
-
3
def category_add; do_add_or_remove_fu; end
-
1
alias_method :resource_add, :category_add
-
1
alias_method :resource_remove, :category_add
-
-
1
def attachment_box_add
-
render :update do |page|
-
page["attachment_add_#{params[:id]}"].remove
-
page.insert_html :bottom, 'attachments',
-
:partial => 'admin/content/attachment',
-
:locals => { :attachment_num => params[:id], :hidden => true }
-
page.visual_effect(:toggle_appear, "attachment_#{params[:id]}")
-
end
-
end
-
-
1
def attachment_save(attachment)
-
begin
-
Resource.create(:filename => attachment.original_filename, :mime => attachment.content_type.chomp,
-
:created_at => Time.now).write_to_disk(attachment)
-
rescue => e
-
logger.info(e.message)
-
nil
-
end
-
end
-
-
1
def autosave
-
6
id = params[:id]
-
6
id = params[:article][:id] if params[:article] && params[:article][:id]
-
6
@article = Article.get_or_build_article(id)
-
6
@article.text_filter = current_user.text_filter if current_user.simple_editor?
-
-
6
get_fresh_or_existing_draft_for_article
-
-
6
@article.attributes = params[:article]
-
6
@article.published = false
-
6
set_article_author
-
6
save_attachments
-
-
6
set_article_title_for_autosave
-
-
6
@article.state = "draft" unless @article.state == "withdrawn"
-
6
if @article.save
-
6
render(:update) do |page|
-
6
page.replace_html('autosave', hidden_field_tag('article[id]', @article.id))
-
6
page.replace_html('preview_link', link_to(_("Preview"), {:controller => '/articles', :action => 'preview', :id => @article.id}, {:target => 'new', :class => 'btn info'}))
-
6
page.replace_html('destroy_link', link_to_destroy_draft(@article))
-
end
-
-
6
return true
-
end
-
render :text => nil
-
end
-
-
1
protected
-
-
1
def get_fresh_or_existing_draft_for_article
-
16
if @article.published and @article.id
-
11
parent_id = @article.id
-
11
@article = Article.drafts.child_of(parent_id).first || Article.new
-
11
@article.allow_comments = this_blog.default_allow_comments
-
11
@article.allow_pings = this_blog.default_allow_pings
-
11
@article.parent_id = parent_id
-
end
-
end
-
-
1
attr_accessor :resources, :categories, :resource, :category
-
-
1
def do_add_or_remove_fu
-
2
attrib, action = params[:action].split('_')
-
2
@article = Article.find(params[:id])
-
2
self.send("#{attrib}=", self.class.const_get(attrib.classify).find(params["#{attrib}_id"]))
-
2
send("setup_#{attrib.pluralize}")
-
2
@article.send(attrib.pluralize).send(real_action_for(action), send(attrib))
-
2
@article.save
-
2
render :partial => "show_#{attrib.pluralize}"
-
end
-
-
3
def real_action_for(action); { 'add' => :<<, 'remove' => :delete}[action]; end
-
-
1
def new_or_edit
-
61
id = params[:id]
-
61
id = params[:article][:id] if params[:article] && params[:article][:id]
-
61
@article = Article.get_or_build_article(id)
-
61
@article.text_filter = current_user.text_filter if current_user.simple_editor?
-
-
61
@post_types = PostType.find(:all)
-
61
if request.post?
-
55
if params[:article][:draft]
-
10
get_fresh_or_existing_draft_for_article
-
else
-
45
if not @article.parent_id.nil?
-
8
@article = Article.find(@article.parent_id)
-
end
-
end
-
end
-
-
61
@article.keywords = Tag.collection_to_string @article.tags
-
61
@article.attributes = params[:article]
-
# TODO: Consider refactoring, because double rescue looks... weird.
-
-
61
@article.published_at = DateTime.strptime(params[:article][:published_at], "%B %e, %Y %I:%M %p GMT%z").utc rescue Time.parse(params[:article][:published_at]).utc rescue nil
-
-
61
if request.post?
-
55
set_article_author
-
55
save_attachments
-
-
55
@article.state = "draft" if @article.draft
-
-
55
if @article.save
-
55
destroy_the_draft unless @article.draft
-
55
set_article_categories
-
55
set_the_flash
-
55
redirect_to :action => 'index'
-
55
return
-
end
-
end
-
-
6
@images = Resource.images_by_created_at.page(params[:page]).per(10)
-
6
@resources = Resource.without_images_by_filename
-
6
@macros = TextFilter.macro_filters
-
6
render 'new'
-
end
-
-
1
def set_the_flash
-
55
case params[:action]
-
when 'new'
-
50
flash[:notice] = _('Article was successfully created')
-
when 'edit'
-
5
flash[:notice] = _('Article was successfully updated.')
-
else
-
raise "I don't know how to tidy up action: #{params[:action]}"
-
end
-
end
-
-
1
def destroy_the_draft
-
45
Article.all(:conditions => { :parent_id => @article.id }).map(&:destroy)
-
end
-
-
1
def set_article_author
-
61
return if @article.author
-
61
@article.author = current_user.login
-
61
@article.user = current_user
-
end
-
-
1
def set_article_title_for_autosave
-
6
if @article.title.blank?
-
1
lastid = Article.find(:first, :order => 'id DESC').id
-
1
@article.title = "Draft article " + lastid.to_s
-
end
-
end
-
-
1
def save_attachments
-
61
return if params[:attachments].nil?
-
params[:attachments].each do |k,v|
-
a = attachment_save(v)
-
@article.resources << a unless a.nil?
-
end
-
end
-
-
1
def set_article_categories
-
55
@article.categorizations.clear
-
55
if params[:categories]
-
6
Category.find(params[:categories]).each do |cat|
-
6
@article.categories << cat
-
end
-
end
-
end
-
-
1
def def_build_body
-
if @article.body =~ /<!--more-->/
-
body = @article.body.split('<!--more-->')
-
@article.body = body[0]
-
@article.extended = body[1]
-
end
-
-
end
-
-
1
def setup_resources
-
2
@resources = Resource.by_created_at
-
end
-
end
-
1
class Admin::DashboardController < Admin::BaseController
-
1
require 'open-uri'
-
1
require 'time'
-
1
require 'rexml/document'
-
-
1
def index
-
1
@newposts = Article.count(:all, :conditions => ['published = ? and published_at > ?', true, current_user.last_venue])
-
1
@newcomments = Feedback.count(:all, :conditions =>['state in (?,?) and published_at > ?', 'presumed_ham', 'ham', current_user.last_venue])
-
1
comments
-
1
lastposts
-
1
popular
-
1
statistics
-
1
inbound_links
-
1
typo_dev
-
1
typo_version
-
end
-
-
1
private
-
-
1
def statistics
-
1
@statposts = Article.published.count
-
1
@statuserposts = Article.published.count(:conditions => {:user_id => current_user.id})
-
1
@statcomments = Comment.count(:all, :conditions => "state != 'spam'")
-
1
@statspam = Comment.count(:all, :conditions => { :state => 'spam' })
-
1
@presumedspam = Comment.count(:all, :conditions => { :state => 'presumed_spam' })
-
1
@categories = Category.count(:all)
-
end
-
-
1
def comments
-
@comments ||=
-
Comment.find(:all,
-
:limit => 5,
-
:conditions => ['published = ?', true],
-
1
:order => 'created_at DESC')
-
end
-
-
1
def lastposts
-
1
@recent_posts = Article.find(:all,
-
:conditions => ["published = ?", true],
-
:order => 'published_at DESC',
-
:limit => 5)
-
end
-
-
1
def popular
-
1
@bestof = Article.find(:all,
-
:select => 'contents.*, comment_counts.count AS comment_count',
-
:from => "contents, (SELECT feedback.article_id AS article_id, COUNT(feedback.id) as count FROM feedback WHERE feedback.state IN ('presumed_ham', 'ham') GROUP BY feedback.article_id ORDER BY count DESC LIMIT 9) AS comment_counts",
-
:conditions => ['comment_counts.article_id = contents.id AND published = ?', true],
-
:order => 'comment_counts.count DESC',
-
:limit => 5)
-
end
-
-
1
def inbound_links
-
1
url = "http://www.google.com/search?q=link:#{this_blog.base_url}&tbm=blg&output=rss"
-
1
open(url) do |http|
-
@inbound_links = parse_rss(http.read).reverse
-
end
-
rescue
-
1
@inbound_links = nil
-
end
-
-
1
def typo_version
-
1
get_typo_version
-
1
version = @typo_version ? @typo_version.split('.') : TYPO_VERSION.to_s.split('.')
-
-
1
if version[0].to_i > TYPO_MAJOR.to_i
-
flash.now[:error] = _("You are late from at least one major version of Typo. You should upgrade immediately. Download and install %s", "<a href='http://typosphere.org/stable.tgz'>#{_("the latest Typo version")}</a>").html_safe
-
1
elsif version[1].to_i > TYPO_SUB.to_i
-
flash.now[:warning] = _("There's a new version of Typo available which may contain important bug fixes. Why don't you upgrade to %s ?", "<a href='http://typosphere.org/stable.tgz'>#{_("the latest Typo version")}</a>").html_safe
-
1
elsif version[2].to_i > TYPO_MINOR.to_i
-
flash.now[:notice] = _("There's a new version of Typo available. Why don't you upgrade to %s ?", "<a href='http://typosphere.org/stable.tgz'>#{_("the latest Typo version")}</a>").html_safe
-
end
-
end
-
-
1
def get_typo_version
-
1
url = "http://blog.typosphere.org/version.txt"
-
1
open(url) do |http|
-
@typo_version = http.read[0..5]
-
end
-
rescue
-
1
@typo_version = nil
-
end
-
-
1
def typo_dev
-
1
url = "http://blog.typosphere.org/articles.rss"
-
1
open(url) do |http|
-
@typo_links = parse_rss(http.read)[0..4]
-
end
-
rescue
-
1
@typo_links = nil
-
end
-
-
1
private
-
-
1
class RssItem < Struct.new(:link, :title, :description, :description_link, :date, :author)
-
1
def to_s; title end
-
end
-
-
1
def parse_rss(body)
-
xml = REXML::Document.new(body)
-
-
items = []
-
link = REXML::XPath.match(xml, "//channel/link/text()").first.value rescue ""
-
title = REXML::XPath.match(xml, "//channel/title/text()").first.value rescue ""
-
-
REXML::XPath.each(xml, "//item/") do |elem|
-
item = RssItem.new
-
item.title = REXML::XPath.match(elem, "title/text()").first.value rescue ""
-
item.link = REXML::XPath.match(elem, "link/text()").first.value rescue ""
-
item.description = REXML::XPath.match(elem, "description/text()").first.value rescue ""
-
item.author = REXML::XPath.match(elem, "dc:publisher/text()").first.value rescue ""
-
item.date = Time.mktime(*ParseDate.parsedate(REXML::XPath.match(elem, "dc:date/text()").first.value)) rescue Time.now
-
-
item.description_link = item.description
-
item.description.gsub!(/<\/?a\b.*?>/, "") # remove all <a> tags
-
items << item
-
end
-
-
items.sort_by { |item| item.date }
-
end
-
end
-
1
class Admin::FeedbackController < Admin::BaseController
-
1
cache_sweeper :blog_sweeper
-
-
1
def index
-
7
conditions = ['1 = 1', {}]
-
-
7
if params[:search]
-
conditions.first << ' and (url like :pattern or author like :pattern or title like :pattern or ip like :pattern or email like :pattern)'
-
conditions.last.merge!(:pattern => "%#{params[:search]}%")
-
end
-
-
7
if params[:published] == 'f'
-
2
conditions.first << ' and (published = :published)'
-
2
conditions.last.merge!(:published => false)
-
end
-
-
7
if params[:confirmed] == 'f'
-
2
conditions.first << ' AND (status_confirmed = :status_confirmed)'
-
2
conditions.last.merge!(:status_confirmed => false)
-
end
-
-
7
if params[:ham] == 'f'
-
conditions.first << ' AND state = :state '
-
conditions.last.merge!(:state => 'ham')
-
end
-
-
7
if params[:spam] == 'f'
-
conditions.first << ' AND state = :state '
-
conditions.last.merge!(:state => 'spam')
-
end
-
-
7
if params[:presumed_ham] == 'f'
-
1
conditions.first << ' AND state = :state '
-
1
conditions.last.merge!(:state => 'presumed_ham')
-
end
-
-
7
if params[:presumed_spam] == 'f'
-
1
conditions.first << ' AND state = :state '
-
1
conditions.last.merge!(:state => 'presumed_spam')
-
end
-
-
# no need params[:page] if empty of == 0, there are a crash otherwise
-
7
if params[:page].blank? || params[:page] == "0"
-
7
params.delete(:page)
-
end
-
7
@feedback = Feedback.where(conditions).order('feedback.created_at desc').page(params[:page]).per(this_blog.admin_display_elements)
-
end
-
-
1
def article
-
4
@article = Article.find(params[:id])
-
3
if params[:ham] && params[:spam].blank?
-
1
@feedback = @article.comments.ham
-
end
-
3
if params[:spam] && params[:ham].blank?
-
1
@feedback = @article.comments.spam
-
end
-
3
@feedback ||= @article.comments
-
end
-
-
1
def destroy
-
8
@record = Feedback.find params[:id]
-
-
8
unless @record.article.user_id == current_user.id
-
1
unless current_user.admin?
-
1
return redirect_to :controller => 'admin/feedback', :action => :index
-
end
-
end
-
-
7
return(render 'admin/shared/destroy') unless request.post?
-
-
5
begin
-
5
@record.destroy
-
5
flash[:notice] = _("Deleted")
-
rescue ActiveRecord::RecordNotFound
-
flash[:notice] = _("Not found")
-
end
-
5
redirect_to :action => 'article', :id => @record.article.id
-
end
-
-
1
def create
-
5
@article = Article.find(params[:article_id])
-
3
@comment = @article.comments.build(params[:comment])
-
3
@comment.user_id = current_user.id
-
-
3
if request.post? and @comment.save
-
# We should probably wave a spam filter over this, but for now, just mark it as published.
-
2
@comment.mark_as_ham!
-
2
flash[:notice] = _('Comment was successfully created.')
-
end
-
3
redirect_to :action => 'article', :id => @article.id
-
end
-
-
1
def edit
-
3
@comment = Comment.find(params[:id])
-
3
@article = @comment.article
-
3
unless @article.access_by? current_user
-
1
redirect_to :action => 'index'
-
return
-
end
-
end
-
-
1
def update
-
4
comment = Comment.find(params[:id])
-
4
unless comment.article.access_by? current_user
-
1
redirect_to :action => 'index'
-
1
return
-
end
-
3
comment.attributes = params[:comment]
-
3
if request.post? and comment.save
-
2
flash[:notice] = _('Comment was successfully updated.')
-
2
redirect_to :action => 'article', :id => comment.article.id
-
else
-
1
redirect_to :action => 'edit', :id => comment.id
-
end
-
end
-
-
1
def change_state
-
return unless request.xhr?
-
-
feedback = Feedback.find(params[:id])
-
if (feedback.state.to_s.downcase == 'spam')
-
feedback.mark_as_ham!
-
else
-
feedback.mark_as_spam!
-
end
-
-
template = (feedback.state.to_s.downcase == 'spam') ? 'spam' : 'ham'
-
render(:update) do |page|
-
if params[:context] != 'listing'
-
page.visual_effect :fade, "feedback_#{feedback.id}"
-
else
-
page.replace("feedback_#{feedback.id}", :partial => template, :locals => {:comment => feedback})
-
end
-
end
-
end
-
-
1
def bulkops
-
1
ids = (params[:feedback_check]||{}).keys.map(&:to_i)
-
1
items = Feedback.find(ids)
-
1
@unexpired = true
-
-
1
bulkop = params[:bulkop_top].empty? ? params[:bulkop_bottom] : params[:bulkop_top]
-
1
case bulkop
-
when 'Delete Checked Items'
-
count = 0
-
ids.each do |id|
-
count += Feedback.delete(id) ## XXX Should this be #destroy?
-
end
-
flash[:notice] = _("Deleted %d item(s)",count)
-
-
items.each do |i|
-
i.invalidates_cache? or next
-
flush_cache
-
return
-
end
-
when 'Mark Checked Items as Ham'
-
update_feedback(items, :mark_as_ham!)
-
flash[:notice]= _("Marked %d item(s) as Ham",ids.size)
-
when 'Mark Checked Items as Spam'
-
update_feedback(items, :mark_as_spam!)
-
flash[:notice]= _("Marked %d item(s) as Spam",ids.size)
-
when 'Confirm Classification of Checked Items'
-
update_feedback(items, :confirm_classification!)
-
flash[:notice] = _("Confirmed classification of %s item(s)",ids.size)
-
when 'Delete all spam'
-
delete_all_spam
-
else
-
1
flash[:notice] = _("Not implemented")
-
end
-
-
1
if params[:article_id]
-
redirect_to :action => 'article', :id => params[:article_id], :confirmed => params[:confirmed], :published => params[:published]
-
else
-
1
redirect_to :action => 'index', :page => params[:page], :search => params[:search], :confirmed => params[:confirmed], :published => params[:published]
-
end
-
end
-
-
1
protected
-
-
1
def delete_all_spam
-
if request.post?
-
Feedback.delete_all(['state = ?', 'spam'])
-
flash[:notice] = _("All spam have been deleted")
-
end
-
end
-
-
1
def update_feedback(items, method)
-
items.each do |value|
-
value.send(method)
-
@unexpired && value.invalidates_cache? or next
-
flush_cache
-
end
-
end
-
-
1
def flush_cache
-
@unexpired = false
-
PageCache.sweep_all
-
end
-
-
end
-
# coding: utf-8
-
1
require 'base64'
-
-
1
class Admin::PagesController < Admin::BaseController
-
1
layout "administration", :except => 'show'
-
1
cache_sweeper :blog_sweeper
-
-
1
def index
-
2
@search = params[:search] ? params[:search] : {}
-
2
@pages = Page.search_paginate(@search, :page => params[:page], :per_page => this_blog.admin_display_elements)
-
end
-
-
1
def new
-
6
@macros = TextFilter.macro_filters
-
6
@page = Page.new(params[:page])
-
6
@page.user_id = current_user.id
-
6
@page.text_filter ||= current_user.text_filter
-
6
@images = Resource.where("mime LIKE '%image%'").order('created_at DESC').page(1).per(10)
-
6
if request.post?
-
3
@page.published_at = Time.now
-
3
if @page.save
-
3
flash[:notice] = _('Page was successfully created.')
-
3
redirect_to :action => 'index'
-
end
-
end
-
end
-
-
1
def edit
-
2
@macros = TextFilter.macro_filters
-
2
@images = Resource.where("mime LIKE '%image%'").page(1).order('created_at DESC').per(10)
-
2
@page = Page.find(params[:id])
-
2
@page.attributes = params[:page]
-
2
if request.post? and @page.save
-
1
flash[:notice] = _('Page was successfully updated.')
-
1
redirect_to :action => 'index'
-
end
-
end
-
-
1
def destroy
-
1
@record = Page.find(params[:id])
-
1
return(render 'admin/shared/destroy') unless request.post?
-
-
1
@record.destroy
-
1
redirect_to :action => 'index'
-
end
-
-
# TODO Duplicate with Admin::ContentController
-
1
def insert_editor
-
3
editor = 'visual'
-
3
editor = 'simple' if params[:editor].to_s == 'simple'
-
3
current_user.editor = editor
-
3
current_user.save!
-
-
3
render :partial => "#{editor}_editor"
-
end
-
-
end
-
1
class Admin::PostTypesController < Admin::BaseController
-
1
cache_sweeper :blog_sweeper
-
-
2
def index; redirect_to :action => 'new' ; end
-
2
def new; new_or_edit ; end
-
4
def edit; new_or_edit; end
-
-
1
def destroy
-
3
@record = PostType.find(params[:id])
-
3
return(render 'admin/shared/destroy') unless request.post?
-
-
1
Article.find(:all, :conditions => ["post_type = ?", @record.permalink]).each do |article|
-
article.post_type = 'read'
-
article.save
-
end
-
1
@record.destroy
-
1
redirect_to :action => 'index'
-
end
-
-
1
private
-
-
1
def new_or_edit
-
4
@post_types = PostType.find(:all)
-
4
@post_type = case params[:id]
-
when nil
-
3
PostType.new
-
else
-
1
PostType.find(params[:id])
-
end
-
4
@post_type.attributes = params[:post_type]
-
4
if request.post?
-
2
save_post_type
-
2
return
-
end
-
2
render 'new'
-
end
-
-
1
def save_post_type
-
2
if @post_type.save!
-
2
flash[:notice] = _('Post Type was successfully saved.')
-
else
-
flash[:error] = _('Post Type could not be saved.')
-
end
-
2
redirect_to :action => 'index'
-
end
-
-
end
-
1
class Admin::ProfilesController < Admin::BaseController
-
1
helper Admin::UsersHelper
-
-
1
def index
-
2
@user = current_user
-
2
@profiles = Profile.find(:all, :order => 'id')
-
2
@user.attributes = params[:user]
-
2
if request.post? and @user.save
-
1
current_user = @user
-
1
flash[:notice] = _('User was successfully updated.')
-
end
-
end
-
-
end
-
1
class Admin::RedirectsController < Admin::BaseController
-
2
def index; redirect_to :action => 'new' ; end
-
5
def edit; new_or_edit; end
-
1
def new; new_or_edit; end
-
-
-
1
def destroy
-
3
@record = Redirect.find(params[:id])
-
3
return(render 'admin/shared/destroy') unless request.post?
-
-
2
@record.destroy
-
2
flash[:notice] = _('Redirection was successfully deleted.')
-
2
redirect_to :action => 'index'
-
end
-
-
1
private
-
1
def new_or_edit
-
4
@redirects = Redirect.where("origin is null").order('created_at desc').page(params[:page]).per(this_blog.admin_display_elements)
-
-
4
@redirect = case params[:id]
-
when nil
-
2
Redirect.new
-
else
-
2
Redirect.find(params[:id])
-
end
-
-
4
@redirect.attributes = params[:redirect]
-
4
if request.post?
-
3
if @redirect.from_path.empty? || @redirect.from_path.nil?
-
1
@redirect.from_path = @redirect.shorten
-
end
-
3
save_redirect
-
3
return
-
end
-
1
render 'new'
-
end
-
-
1
def save_redirect
-
3
if @redirect.save!
-
3
flash[:notice] = _('Redirection was successfully saved.')
-
else
-
flash[:error] = _('Redirection could not be saved.')
-
end
-
3
redirect_to :action => 'index'
-
end
-
end
-
1
class Admin::ResourcesController < Admin::BaseController
-
1
upload_status_for :file_upload, :status => :upload_status
-
-
1
cache_sweeper :blog_sweeper
-
-
1
def upload
-
begin
-
if request.post?
-
file = params[:upload][:filename]
-
unless file.content_type
-
mime = 'text/plain'
-
else
-
mime = file.content_type.chomp
-
end
-
@up = Resource.create(:filename => file.original_filename, :mime => mime, :created_at => Time.now)
-
-
@up.write_to_disk(file)
-
-
@message = _('File uploaded: ')+ file.size.to_s
-
finish_upload_status "'#{@message}'"
-
end
-
rescue
-
@message = "'" + _('Unable to upload') + " #{file.original_filename}'"
-
@up.destroy unless @up.nil?
-
raise
-
end
-
end
-
-
1
def update
-
@resource = Resource.find(params[:resource][:id])
-
@resource.attributes = params[:resource]
-
-
if request.post? and @resource.save
-
flash[:notice] = _('Metadata was successfully updated.')
-
else
-
flash[:error] = _('Not all metadata was defined correctly.')
-
@resource.errors.each do |meta_key,val|
-
flash[:error] << "<br />" + val
-
end
-
end
-
redirect_to :action => 'index'
-
end
-
-
1
def upload_status
-
render :inline => "<%= upload_progress.completed_percent rescue 0 %> % " + _("complete"), :layout => false
-
end
-
-
1
def index
-
1
@r = Resource.new
-
1
@resources = Resource.order('created_at DESC').page(params[:page]).per(this_blog.admin_display_elements)
-
end
-
-
1
def get_thumbnails
-
position = params[:position].to_i
-
@resources = Resource.without_images.by_created_at.limit("#{position}, 10")
-
render 'get_thumbnails', :layout => false
-
end
-
-
1
def destroy
-
3
begin
-
3
@record = Resource.find(params[:id])
-
3
mime = @record.mime
-
3
return(render 'admin/shared/destroy') unless request.post?
-
-
1
@record.destroy
-
1
redirect_to :action => 'index'
-
rescue
-
raise
-
end
-
end
-
end
-
1
class Admin::SeoController < Admin::BaseController
-
1
cache_sweeper :blog_sweeper
-
-
1
def index
-
1
load_settings
-
1
if File.exists? "#{::Rails.root.to_s}/public/robots.txt"
-
1
@setting.robots = ""
-
1
file = File.readlines("#{::Rails.root.to_s}/public/robots.txt")
-
1
file.each do |line|
-
3
@setting.robots << line
-
end
-
else
-
build_robots
-
end
-
end
-
-
1
def permalinks
-
1
if request.post?
-
if params[:setting]['permalink_format'] and params[:setting]['permalink_format'] == 'custom'
-
params[:setting]['permalink_format'] = params[:setting]['custom_permalink']
-
end
-
update
-
return
-
end
-
-
1
load_settings
-
if @setting.permalink_format != '/%year%/%month%/%day%/%title%' and
-
1
@setting.permalink_format != '/%year%/%month%/%title%' and
-
@setting.permalink_format != '/%title%'
-
@setting.custom_permalink = @setting.permalink_format
-
@setting.permalink_format = 'custom'
-
end
-
end
-
-
1
def titles
-
1
load_settings
-
end
-
-
1
def update
-
2
if request.post?
-
2
Blog.transaction do
-
4
params[:setting].each { |k,v| this_blog.send("#{k.to_s}=", v) }
-
2
this_blog.save
-
2
flash[:notice] = _('config updated.')
-
end
-
-
2
save_robots unless params[:setting][:robots].blank?
-
-
2
redirect_to :action => params[:from]
-
end
-
rescue ActiveRecord::RecordInvalid
-
render params[:from]
-
end
-
-
1
private
-
1
def load_settings
-
3
@setting = this_blog
-
end
-
-
1
def save_robots
-
if File.writable? "#{::Rails.root.to_s}/public/robots.txt"
-
robots = File.new("#{::Rails.root.to_s}/public/robots.txt", "r+")
-
robots.write(params[:setting][:robots])
-
robots.close
-
end
-
end
-
-
1
def build_robots
-
robots = File.new("#{::Rails.root.to_s}/public/robots.txt", "w+")
-
line = "User-agent: *\nAllow: /\nDisallow: /admin\n"
-
robots.write(line)
-
robots.close
-
@setting.robots = line
-
end
-
-
end
-
1
class Admin::SettingsController < Admin::BaseController
-
1
cache_sweeper :blog_sweeper
-
-
1
def index
-
1
if this_blog.base_url.blank?
-
this_blog.base_url = blog_base_url
-
end
-
1
load_settings
-
end
-
-
2
def write; load_settings end
-
2
def feedback; load_settings end
-
1
def errors; load_settings; end
-
-
1
def redirect
-
1
flash[:notice] = _("Please review and save the settings before continuing")
-
1
redirect_to :action => "index"
-
end
-
-
1
def update
-
2
if request.post?
-
2
Blog.transaction do
-
11
params[:setting].each { |k,v| this_blog.send("#{k.to_s}=", v) }
-
2
this_blog.save
-
2
flash[:notice] = _('config updated.')
-
end
-
-
2
redirect_to :action => params[:from]
-
end
-
rescue ActiveRecord::RecordInvalid
-
render params[:from]
-
end
-
-
1
def update_database
-
@current_version = Migrator.current_schema_version
-
@needed_version = Migrator.max_schema_version
-
@support = Migrator.db_supports_migrations?
-
@needed_migrations = Migrator.available_migrations[@current_version..@needed_version].collect do |mig|
-
mig.scan(/\d+\_([\w_]+)\.rb$/).flatten.first.humanize
-
end
-
end
-
-
1
def migrate
-
if request.post?
-
Migrator.migrate
-
redirect_to :action => 'update_database'
-
end
-
end
-
-
1
private
-
1
def load_settings
-
3
@setting = this_blog
-
end
-
end
-
1
class Admin::SidebarController < Admin::BaseController
-
1
def index
-
1
@available = available
-
# Reset the staged position based on the active position.
-
1
Sidebar.delete_all('active_position is null')
-
1
flash_sidebars
-
1
begin
-
1
@active = Sidebar.find(:all, :order => 'active_position ASC') unless @active
-
rescue => e
-
logger.error e
-
# Avoiding the view to crash
-
@active = []
-
flash[:error] = _("It seems something went wrong. Maybe some of your sidebars are actually missing and you should either reinstall them or remove them manually")
-
end
-
end
-
-
1
def set_active
-
# Get all available plugins
-
klass_for = available.inject({}) do |hash, klass|
-
hash.merge({ klass.short_name => klass })
-
end
-
-
# Get all already active plugins
-
activemap = flash_sidebars.inject({}) do |h, sb_id|
-
sb = Sidebar.find(sb_id.to_i)
-
sb ? h.merge(sb.html_id => sb_id) : h
-
end
-
-
# Figure out which plugins are referenced by the params[:active] array and
-
# lay them out in a easy accessible sequential array
-
flash[:sidebars] = params[:active].map do |name|
-
if klass_for.has_key?(name)
-
new_sidebar_id = klass_for[name].create.id
-
@new_item = Sidebar.find(new_sidebar_id)
-
new_sidebar_id
-
elsif activemap.has_key?(name)
-
activemap[name]
-
end
-
end.compact
-
end
-
-
1
def remove
-
flash[:sidebars] = flash_sidebars.reject do |sb_id|
-
sb_id == params[:id].to_i
-
end
-
@element_to_remove = params[:element]
-
end
-
-
1
def publish
-
Sidebar.transaction do
-
position = 0
-
params[:configure] ||= { }
-
# Crappy workaround to rails update_all bug with PgSQL / SQLite
-
ActiveRecord::Base.connection.execute("update sidebars set active_position=null")
-
flash_sidebars.each do |id|
-
sidebar = Sidebar.find(id)
-
sb_attribs = params[:configure][id.to_s] || {}
-
# If it's a checkbox and unchecked, convert the 0 to false
-
# This is ugly. Anyone have an improvement?
-
sidebar.fields.each do |field|
-
sb_attribs[field.key] = field.canonicalize(sb_attribs[field.key])
-
end
-
-
sidebar.update_attributes(:config => sb_attribs,
-
:active_position => position)
-
position += 1
-
end
-
Sidebar.delete_all('active_position is null')
-
end
-
PageCache.sweep_all
-
index
-
end
-
-
1
protected
-
-
1
def show_available
-
render :partial => 'availables', :object => available
-
end
-
-
1
def available
-
1
::Sidebar.available_sidebars
-
end
-
-
1
def flash_sidebars
-
1
unless flash[:sidebars]
-
1
begin
-
1
active = Sidebar.find(:all, :order => 'active_position ASC')
-
1
flash[:sidebars] = active.map {|sb| sb.id }
-
rescue => e
-
logger.error e
-
# Avoiding the view to crash
-
@active = []
-
flash[:error] = _("It seems something went wrong. Maybe some of your sidebars are actually missing and you should either reinstall them or remove them manually")
-
end
-
end
-
1
flash[:sidebars]
-
end
-
-
1
helper_method :available
-
end
-
1
class Admin::TagsController < Admin::BaseController
-
1
cache_sweeper :blog_sweeper
-
-
1
def index
-
2
@tags = Tag.order('display_name').page(params[:page]).per(this_blog.admin_display_elements)
-
end
-
-
1
def edit
-
6
@tag = Tag.find(params[:id])
-
6
@tag.attributes = params[:tag]
-
-
6
if request.post?
-
3
old_name = @tag.name
-
-
3
if @tag.save
-
# Create a redirection to ensure nothing nasty happens in the future
-
3
Redirect.create(:from_path => "/tag/#{old_name}", :to_path => @tag.permalink_url(nil, true))
-
-
3
flash[:notice] = _('Tag was successfully updated.')
-
3
redirect_to :action => 'index'
-
end
-
end
-
end
-
-
1
def destroy
-
6
@record = Tag.find(params[:id])
-
6
return(render 'admin/shared/destroy') unless request.post?
-
-
2
@record.destroy
-
2
redirect_to :action => 'index'
-
end
-
-
end
-
1
class Admin::TextfiltersController < Admin::BaseController
-
1
def macro_help
-
4
@macro = TextFilter.available_filters.find { |filter| filter.short_name == params[:id] }
-
1
render :text => BlueCloth.new(@macro.help_text).to_html
-
end
-
-
end
-
1
require 'open-uri'
-
1
require 'time'
-
1
require 'rexml/document'
-
-
1
class Admin::ThemesController < Admin::BaseController
-
1
cache_sweeper :blog_sweeper
-
-
1
def index
-
1
@themes = Theme.find_all
-
1
@themes.each do |theme|
-
7
theme.description_html = TextFilter.filter_text(this_blog, theme.description, nil, [:markdown,:smartypants])
-
end
-
1
@active = this_blog.current_theme
-
end
-
-
1
def preview
-
1
send_file "#{Theme.themes_root}/#{params[:theme]}/preview.png", :type => 'image/png', :disposition => 'inline', :stream => false
-
end
-
-
1
def switchto
-
1
this_blog.theme = params[:theme]
-
1
this_blog.save
-
1
zap_theme_caches
-
1
this_blog.current_theme(:reload)
-
1
flash[:notice] = _("Theme changed successfully")
-
1
require "#{this_blog.current_theme.path}/helpers/theme_helper.rb" if File.exists? "#{this_blog.current_theme.path}/helpers/theme_helper.rb"
-
1
redirect_to :action => 'index'
-
end
-
-
1
protected
-
-
1
def zap_theme_caches
-
4
FileUtils.rm_rf(%w{stylesheets javascript images}.collect{|v| page_cache_directory + "/#{v}/theme"})
-
end
-
end
-
1
class Admin::UsersController < Admin::BaseController
-
1
cache_sweeper :blog_sweeper
-
-
1
def index
-
1
@users = User.order('login asc').page(params[:page]).per(this_blog.admin_display_elements)
-
end
-
-
1
def new
-
2
@user = User.new
-
2
@user.attributes = params[:user]
-
2
@user.text_filter = TextFilter.find_by_name(this_blog.text_filter)
-
2
setup_profiles
-
2
@user.name = @user.login
-
2
if request.post? and @user.save
-
1
flash[:notice] = _('User was successfully created.')
-
1
redirect_to :action => 'index'
-
end
-
end
-
-
1
def edit
-
5
@user = params[:id] ? User.find_by_id(params[:id]) : current_user
-
-
5
setup_profiles
-
5
@user.attributes = params[:user]
-
5
if request.post? and @user.save
-
1
if @user.id = current_user.id
-
1
current_user = @user
-
end
-
1
flash[:notice] = _('User was successfully updated.')
-
1
redirect_to :action => 'index'
-
end
-
end
-
-
1
def destroy
-
2
@record = User.find(params[:id])
-
2
return(render 'admin/shared/destroy') unless request.post?
-
-
1
@record.destroy if User.count > 1
-
1
redirect_to :action => 'index'
-
end
-
-
1
private
-
-
1
def setup_profiles
-
7
@profiles = Profile.find(:all, :order => 'id')
-
end
-
end
-
# Filters added to this controller apply to all controllers in the application.
-
# Likewise, all the methods added will be available for all controllers.
-
-
1
class ApplicationController < ActionController::Base
-
1
include ::LoginSystem
-
1
protect_from_forgery :only => [:edit, :update, :delete]
-
-
1
before_filter :reset_local_cache, :fire_triggers, :load_lang, :set_paths
-
1
after_filter :reset_local_cache
-
-
1
class << self
-
1
unless self.respond_to? :template_root
-
1
def template_root
-
ActionController::Base.view_paths.last
-
end
-
end
-
end
-
-
1
protected
-
-
1
def set_paths
-
503
prepend_view_path "#{::Rails.root.to_s}/themes/#{this_blog.theme}/views"
-
end
-
-
1
def setup_themer
-
# Ick!
-
174
self.class.view_paths = ::ActionController::Base.view_paths.dup.unshift("#{::Rails.root.to_s}/themes/#{this_blog.theme}/views")
-
end
-
-
1
def error(message = "Record not found...", options = { })
-
3
@message = message.to_s
-
3
render 'articles/error', :status => options[:status] || 404
-
end
-
-
1
def fire_triggers
-
503
Trigger.fire
-
end
-
-
1
def load_lang
-
503
Localization.lang = this_blog.lang
-
# Check if for example "en_UK" locale exesists if not check for "en" locale
-
503
if I18n.available_locales.include?(this_blog.lang.to_sym)
-
I18n.locale = this_blog.lang
-
503
elsif I18n.available_locales.include?(this_blog.lang[0..1].to_sym)
-
503
I18n.locale = this_blog.lang[0..1]
-
end
-
# _("Localization.rtl")
-
end
-
-
1
def reset_local_cache
-
986
if !session
-
session :session => new
-
end
-
986
@current_user = nil
-
end
-
-
# The base URL for this request, calculated by looking up the URL for the main
-
# blog index page.
-
1
def blog_base_url
-
5
url_for(:controller => '/articles').gsub(%r{/$},'')
-
end
-
-
1
def add_to_cookies(name, value, path=nil, expires=nil)
-
30
cookies[name] = { :value => value, :path => path || "/#{controller_name}", :expires => 6.weeks.from_now }
-
end
-
-
1
def this_blog
-
3695
@blog ||= Blog.default
-
end
-
end
-
1
class ArticlesController < ContentController
-
1
before_filter :login_required, :only => [:preview]
-
1
before_filter :auto_discovery_feed, :only => [:show, :index]
-
1
before_filter :verify_config
-
-
1
layout :theme_layout, :except => [:comment_preview, :trackback]
-
-
1
cache_sweeper :blog_sweeper
-
1
caches_page :index, :read, :archives, :view_page, :redirect, :if => Proc.new {|c|
-
c.request.query_string == ''
-
}
-
-
1
helper :'admin/base'
-
-
1
def index
-
19
respond_to do |format|
-
33
format.html { @limit = this_blog.limit_article_display }
-
21
format.rss { @limit = this_blog.limit_rss_display }
-
22
format.atom { @limit = this_blog.limit_rss_display }
-
end
-
-
19
unless params[:year].blank?
-
7
@noindex = 1
-
7
@articles = Article.published_at(params.values_at(:year, :month, :day)).page(params[:page]).per(@limit)
-
else
-
12
@noindex = 1 unless params[:page].blank?
-
12
@articles = Article.published.page(params[:page]).per(@limit)
-
end
-
-
19
@page_title = index_title
-
19
@description = index_description
-
19
@keywords = (this_blog.meta_keywords.empty?) ? "" : this_blog.meta_keywords
-
-
19
suffix = (params[:page].nil? and params[:year].nil?) ? "" : "/"
-
-
19
@canonical_url = url_for(:only_path => false, :controller => 'articles', :action => 'index', :page => params[:page], :year => params[:year], :month => params[:month], :day => params[:day]) + suffix
-
19
respond_to do |format|
-
33
format.html { render_paginated_index }
-
19
format.atom do
-
3
render_articles_feed('atom')
-
end
-
19
format.rss do
-
2
auto_discovery_feed(:only_path => false)
-
2
render_articles_feed('rss')
-
end
-
end
-
end
-
-
1
def search
-
11
@canonical_url = url_for(:only_path => false, :controller => 'articles', :action => 'search', :page => params[:page], :q => params[:q])
-
11
@articles = this_blog.articles_matching(params[:q], :page => params[:page], :per_page => @limit)
-
11
return error(_("No posts found..."), :status => 200) if @articles.empty?
-
10
@page_title = this_blog.search_title_template.to_title(@articles, this_blog, params)
-
10
@description = this_blog.search_desc_template.to_title(@articles, this_blog, params)
-
10
respond_to do |format|
-
18
format.html { render 'search' }
-
11
format.rss { render "index_rss_feed", :layout => false }
-
11
format.atom { render "index_atom_feed", :layout => false }
-
end
-
end
-
-
1
def live_search
-
5
@search = params[:q]
-
5
@articles = Article.search(@search)
-
5
render :live_search, :layout => false
-
end
-
-
1
def preview
-
10
@article = Article.last_draft(params[:id])
-
10
@canonical_url = ""
-
10
render 'read'
-
end
-
-
1
def check_password
-
2
return unless request.xhr?
-
2
@article = Article.find(params[:article][:id])
-
2
if @article.password == params[:article][:password]
-
1
render :partial => 'articles/full_article_content', :locals => { :article => @article }
-
else
-
1
render :partial => 'articles/password_form', :locals => { :article => @article }
-
end
-
end
-
-
1
def redirect
-
30
from = split_from_path params[:from]
-
-
30
match_permalink_format from, this_blog.permalink_format
-
30
return show_article if @article
-
-
# Redirect old version with /:year/:month/:day/:title to new format,
-
# because it's changed
-
15
["%year%/%month%/%day%/%title%", "articles/%year%/%month%/%day%/%title%"].each do |part|
-
29
match_permalink_format from, part
-
29
return redirect_to @article.permalink_url, :status => 301 if @article
-
end
-
-
10
r = Redirect.find_by_from_path(from.join("/"))
-
10
return redirect_to r.full_to_path, :status => 301 if r
-
-
6
render "errors/404", :status => 404
-
end
-
-
-
### Deprecated Actions ###
-
-
1
def archives
-
1
@articles = Article.find_published
-
1
@page_title = this_blog.archives_title_template.to_title(@articles, this_blog, params)
-
1
@keywords = (this_blog.meta_keywords.empty?) ? "" : this_blog.meta_keywords
-
1
@description = this_blog.archives_desc_template.to_title(@articles, this_blog, params)
-
1
@canonical_url = url_for(:only_path => false, :controller => 'articles', :action => 'archives')
-
end
-
-
1
def comment_preview
-
if (params[:comment][:body].blank? rescue true)
-
render :nothing => true
-
return
-
end
-
-
set_headers
-
@comment = Comment.new(params[:comment])
-
@controller = self
-
end
-
-
1
def category
-
1
redirect_to categories_path, :status => 301
-
end
-
-
1
def tag
-
1
redirect_to tags_path, :status => 301
-
end
-
-
1
def view_page
-
if(@page = Page.find_by_name(Array(params[:name]).map { |c| c }.join("/"))) && @page.published?
-
@page_title = @page.title
-
@description = (this_blog.meta_description.empty?) ? "" : this_blog.meta_description
-
@keywords = (this_blog.meta_keywords.empty?) ? "" : this_blog.meta_keywords
-
@canonical_url = @page.permalink_url
-
else
-
render "errors/404", :status => 404
-
end
-
end
-
-
# TODO: Move to TextfilterController?
-
1
def markup_help
-
render :text => TextFilter.find(params[:id]).commenthelp
-
end
-
-
1
private
-
-
1
def verify_config
-
82
if ! this_blog.configured?
-
1
redirect_to :controller => "setup", :action => "index"
-
81
elsif User.count == 0
-
1
redirect_to :controller => "accounts", :action => "signup"
-
else
-
80
return true
-
end
-
end
-
-
# See an article We need define @article before
-
1
def show_article
-
15
@comment = Comment.new
-
15
@page_title = this_blog.article_title_template.to_title(@article, this_blog, params)
-
15
@description = this_blog.article_desc_template.to_title(@article, this_blog, params)
-
15
article_meta
-
-
15
auto_discovery_feed
-
15
respond_to do |format|
-
28
format.html { render "articles/#{@article.post_type}" }
-
16
format.atom { render_feedback_feed('atom') }
-
16
format.rss { render_feedback_feed('rss') }
-
15
format.xml { render_feedback_feed('atom') }
-
end
-
rescue ActiveRecord::RecordNotFound
-
error("Post not found...")
-
end
-
-
-
1
def article_meta
-
15
groupings = @article.categories + @article.tags
-
16
@keywords = groupings.map { |g| g.name }.join(", ")
-
15
@canonical_url = @article.permalink_url
-
end
-
-
1
def render_articles_feed format
-
5
if this_blog.feedburner_url.empty? or request.env["HTTP_USER_AGENT"] =~ /FeedBurner/i
-
5
render "index_#{format}_feed", :layout => false
-
else
-
redirect_to "http://feeds2.feedburner.com/#{this_blog.feedburner_url}"
-
end
-
end
-
-
1
def render_feedback_feed format
-
2
@feedback = @article.published_feedback
-
2
render "feedback_#{format}_feed", :layout => false
-
end
-
-
1
def set_headers
-
headers["Content-Type"] = "text/html; charset=utf-8"
-
end
-
-
1
def render_paginated_index(on_empty = _("No posts found..."))
-
14
return error(on_empty, :status => 200) if @articles.empty?
-
12
if this_blog.feedburner_url.empty?
-
12
auto_discovery_feed(:only_path => false)
-
else
-
@auto_discovery_url_rss = "http://feeds2.feedburner.com/#{this_blog.feedburner_url}"
-
@auto_discovery_url_atom = "http://feeds2.feedburner.com/#{this_blog.feedburner_url}"
-
end
-
12
render 'index'
-
end
-
-
1
def index_title
-
19
if params[:year]
-
7
return this_blog.archives_title_template.to_title(@articles, this_blog, params)
-
12
elsif params[:page]
-
return this_blog.paginated_title_template.to_title(@articles, this_blog, params)
-
else
-
12
this_blog.home_title_template.to_title(@articles, this_blog, params)
-
end
-
end
-
-
1
def index_description
-
19
if params[:year]
-
7
return this_blog.archives_desc_template.to_title(@articles, this_blog, params)
-
12
elsif params[:page]
-
return this_blog.paginated_desc_template.to_title(@articles, this_blog, params)
-
else
-
12
this_blog.home_desc_template.to_title(@articles, this_blog, params)
-
end
-
end
-
-
1
def time_delta(year, month = nil, day = nil)
-
from = Time.mktime(year, month || 1, day || 1)
-
-
to = from.next_year
-
to = from.next_month unless month.blank?
-
to = from + 1.day unless day.blank?
-
to = to - 1 # pull off 1 second so we don't overlap onto the next day
-
return from..to
-
end
-
-
1
def split_from_path path
-
30
parts = path.split '/'
-
30
parts.delete('')
-
30
if parts.last =~ /\.atom$/
-
1
request.format = 'atom'
-
1
parts.last.gsub!(/\.atom$/, '')
-
elsif parts.last =~ /\.rss$/
-
1
request.format = 'rss'
-
1
parts.last.gsub!(/\.rss$/, '')
-
end
-
30
parts
-
end
-
-
1
def match_permalink_format parts, format
-
59
specs = format.split('/')
-
59
specs.delete('')
-
-
59
return if parts.length != specs.length
-
-
26
article_params = {}
-
-
26
specs.zip(parts).each do |spec, item|
-
65
if spec =~ /(.*)%(.*)%(.*)/
-
57
before_format = $1
-
57
format_string = $2
-
57
after_format = $3
-
57
result = item.gsub(/^#{before_format}(.*)#{after_format}$/, '\1')
-
57
article_params[format_string.to_sym] = result
-
else
-
8
return unless spec == item
-
end
-
end
-
25
begin
-
25
@article = this_blog.requested_article(article_params)
-
rescue
-
#Not really good.
-
# TODO :Check in request_article type of DATA made in next step
-
5
end
-
end
-
end
-
1
class AuthorsController < ContentController
-
1
layout :theme_layout
-
-
1
def show
-
13
@author = User.find_by_login(params[:id])
-
13
raise ActiveRecord::RecordNotFound unless @author
-
13
@articles = @author.articles.published
-
13
@page_title = this_blog.author_title_template.to_title(@author, this_blog, params)
-
13
@keywords = (this_blog.meta_keywords.empty?) ? "" : this_blog.meta_keywords
-
13
@description = this_blog.author_desc_template.to_title(@author, this_blog, params)
-
-
13
respond_to do |format|
-
13
format.html do
-
7
render
-
end
-
13
format.rss do
-
3
auto_discovery_feed(:only_path => false)
-
3
render_feed "rss"
-
end
-
13
format.atom do
-
3
render_feed "atom"
-
end
-
end
-
end
-
-
1
private
-
-
1
def render_feed format
-
6
render "show_#{format}_feed", :layout => false
-
end
-
end
-
1
require 'action_web_service'
-
1
class BackendController < ContentController
-
1
skip_before_filter :verify_authenticity_token
-
1
cache_sweeper :blog_sweeper
-
-
1
web_service_dispatching_mode :layered
-
1
web_service_exception_reporting false
-
-
46
web_service(:metaWeblog) { MetaWeblogService.new(self) }
-
31
web_service(:mt) { MovableTypeService.new(self) }
-
25
web_service(:blogger) { BloggerService.new(self) }
-
-
1
def xmlrpc
-
api
-
end
-
-
1
def api
-
33
dispatch_web_service_request
-
end
-
end
-
1
class CategoriesController < GroupingController
-
# index - inherited
-
# show - inherited
-
end
-
1
class CommentsController < FeedbackController
-
1
before_filter :get_article, :only => [:create, :preview]
-
-
1
def create
-
9
@comment = @article.with_options(new_comment_defaults) do |art|
-
9
art.add_comment(params[:comment].symbolize_keys)
-
end
-
-
9
unless current_user.nil? or session[:user_id].nil?
-
# maybe useless, but who knows ?
-
if current_user.id == session[:user_id]
-
@comment.user_id = current_user.id
-
end
-
end
-
-
9
set_cookies_for @comment
-
-
9
partial = '/articles/comment_failed'
-
9
if recaptcha_ok_for?(@comment) && @comment.save
-
9
partial = '/articles/comment'
-
end
-
9
if request.xhr?
-
1
render :partial => partial, :object => @comment
-
else
-
8
redirect_to @article.permalink_url
-
end
-
end
-
-
1
def preview
-
if !session
-
session :session => new
-
end
-
-
comment_params = params[:comment]
-
if (params_comment[:body].blank? rescue true)
-
render :nothing => true
-
return
-
end
-
-
set_headers
-
@comment = Comment.new(params_comment)
-
-
unless @article.comments_closed?
-
render 'articles/comment_preview', :locals => { :comment => @comment }
-
else
-
render :text => 'Comment are closed'
-
end
-
end
-
-
1
protected
-
-
1
def recaptcha_ok_for? comment
-
9
use_recaptcha = Blog.default.settings["use_recaptcha"]
-
9
((use_recaptcha && verify_recaptcha(:model => comment)) || !use_recaptcha)
-
end
-
-
1
def get_feedback
-
8
@comments = \
-
if params[:article_id]
-
2
Article.find(params[:article_id]).published_comments
-
else
-
6
Comment.find_published(:all, this_blog.rss_limit_params.merge(:order => 'created_at DESC'))
-
end
-
end
-
-
1
def new_comment_defaults
-
{ :ip => request.remote_ip,
-
:author => 'Anonymous',
-
:published => true,
-
:user => @current_user,
-
:user_agent => request.env['HTTP_USER_AGENT'],
-
:referrer => request.env['HTTP_REFERER'],
-
9
:permalink => @article.permalink_url }
-
end
-
-
1
def set_headers
-
headers["Content-Type"] = "text/html; charset=utf-8"
-
end
-
-
1
def set_cookies_for comment
-
9
add_to_cookies(:author, comment.author)
-
9
add_to_cookies(:url, comment.url)
-
9
if ! comment.email.blank?
-
7
add_to_cookies(:gravatar_id, Digest::MD5.hexdigest(comment.email.strip))
-
end
-
end
-
-
1
def get_article
-
9
@article = Article.find(params[:article_id])
-
end
-
end
-
1
class ContentController < ApplicationController
-
1
class ExpiryFilter
-
1
def before(controller)
-
@request_time = Time.now
-
end
-
-
1
def after(controller)
-
future_article =
-
Article.find(:first,
-
:conditions => ['published = ? AND published_at > ?', true, @request_time],
-
:order => "published_at ASC" )
-
if future_article
-
delta = future_article.published_at - Time.now
-
controller.response.lifetime = (delta <= 0) ? 0 : delta
-
end
-
end
-
end
-
-
1
include LoginSystem
-
1
before_filter :setup_themer
-
1
helper :theme
-
-
1
protected
-
-
# TODO: Make this work for all content.
-
1
def auto_discovery_feed(options = { })
-
94
with_options(options.reverse_merge(:only_path => true)) do |opts|
-
94
@auto_discovery_url_rss = opts.url_for(:format => 'rss', :only_path => false)
-
94
@auto_discovery_url_atom = opts.url_for(:format => 'atom', :only_path => false)
-
end
-
end
-
-
1
def theme_layout
-
93
this_blog.current_theme.layout(self.action_name)
-
end
-
end
-
1
class FeedbackController < ApplicationController
-
1
helper :theme
-
-
1
before_filter :get_article, :only => [:create]
-
-
1
cache_sweeper :blog_sweeper
-
-
# Used only by comments. Maybe need move to comments controller
-
# or use it in our code with send some feed about trackback
-
#
-
# Redirect to article with good anchor with /comments?article_id=xxx ou
-
# /trackacks?article_id=xxx
-
#
-
# If no article_id params, so no page found. TODO: See all
-
# comments/trackbacks with paginate ?
-
#
-
# If /comments.rss|atom or /trabacks.atom|rss see a feed about all comments
-
# or trackback
-
#
-
# If article_id params in feed see only this comment|feedback on this
-
# article.
-
#
-
# TODO: It's usefull but use anywhere. Create some extension in xml_sidebar
-
# to define this feed.
-
1
def index
-
17
@page_title = self.class.name.to_s.sub(/Controller$/, '')
-
17
respond_to do |format|
-
17
format.html do
-
3
if params[:article_id]
-
1
article = Article.find(params[:article_id])
-
1
redirect_to "#{article.permalink_url}\##{@page_title.underscore}"
-
else
-
2
render :text => 'this space left blank'
-
end
-
end
-
24
format.atom { render_feed 'atom', get_feedback }
-
24
format.rss { render_feed 'rss', get_feedback }
-
end
-
end
-
-
1
protected
-
-
1
def get_feedback
-
if params[:article_id]
-
Article.find(params[:article_id]).published_feedback
-
else
-
this_blog.published_feedback.find(:all, this_blog.rss_limit_params.merge(:order => 'created_at DESC'))
-
end
-
end
-
-
1
def render_feed(format, collection)
-
14
ivar_name = "@#{self.class.to_s.sub(/Controller$/, '').underscore}"
-
14
instance_variable_set(ivar_name, collection)
-
14
render "index_#{format}_feed"
-
end
-
end
-
1
class GroupingController < ContentController
-
1
before_filter :auto_discovery_feed, :only => [:show, :index]
-
1
layout :theme_layout
-
1
cache_sweeper :blog_sweeper
-
-
1
caches_page :index, :show, :if => Proc.new {|c|
-
c.request.query_string == ''
-
}
-
-
1
class << self
-
1
def grouping_class(klass = nil)
-
130
if klass
-
@grouping_class = klass
-
end
-
@grouping_class ||= \
-
self.to_s \
-
.sub(/Controller$/,'') \
-
130
.singularize.constantize
-
end
-
-
1
def ivar_name
-
16
@ivar_name ||= "@#{to_s.sub(/Controller$/, '').underscore}"
-
end
-
end
-
-
1
def index
-
8
@noindex = set_noindex params[:page]
-
8
self.groupings = grouping_class.page(params[:page]).per(100)
-
8
@page_title = "#{self.class.to_s.sub(/Controller$/,'')}"
-
8
@keywords = ""
-
8
@description = "#{_(self.class.to_s.sub(/Controller$/,''))} #{'for'} #{this_blog.blog_name}"
-
8
@description << "#{_('page')} #{params[:page]}" if params[:page]
-
8
render_index(groupings)
-
end
-
-
1
def show
-
33
@noindex = set_noindex params[:page]
-
33
@grouping = grouping_class.find_by_permalink(params[:id])
-
32
return render_empty if @grouping.nil?
-
-
31
@canonical_url = permalink_with_page @grouping, params[:page]
-
31
@page_title = show_page_title_for @grouping, params[:page]
-
31
@description = @grouping.description.to_s
-
31
@keywords = keyword_from @grouping
-
31
@articles = @grouping.articles.published.page(params[:page]).per(10)
-
-
31
render_articles
-
end
-
-
1
protected
-
-
1
def grouping_class
-
122
self.class.grouping_class
-
end
-
-
1
def groupings=(groupings)
-
8
instance_variable_set(self.class.ivar_name, groupings)
-
end
-
-
1
def groupings
-
8
instance_variable_get(self.class.ivar_name)
-
end
-
-
1
def keyword_from grouping
-
31
keywords = ""
-
31
keywords << grouping.keywords unless grouping.keywords.blank?
-
31
keywords << this_blog.meta_keywords unless this_blog.meta_keywords.blank?
-
31
keywords
-
end
-
-
1
def show_page_title_for grouping, page
-
31
if self.class.to_s.sub(/Controller$/,'').singularize == 'Category'
-
14
@page_title = this_blog.category_title_template.to_title(@grouping, this_blog, params)
-
14
@description = this_blog.category_title_template.to_title(@grouping, this_blog, params)
-
17
elsif self.class.to_s.sub(/Controller$/,'').singularize == 'Tag'
-
17
@page_title = this_blog.tag_title_template.to_title(@grouping, this_blog, params)
-
17
@description = this_blog.tag_title_template.to_title(@grouping, this_blog, params)
-
end
-
end
-
-
# For some reasons, the permalink_url does not take the pagination.
-
1
def permalink_with_page grouping, page
-
31
suffix = page.nil? ? "/" : "/page/#{page}/"
-
31
grouping.permalink_url + suffix
-
end
-
-
1
def render_index(groupings)
-
8
respond_to do |format|
-
8
format.html do
-
8
unless template_exists? "#{self.class.to_s.sub(/Controller$/,'').downcase}/index"
-
8
@grouping_class = self.class.grouping_class
-
8
@groupings = groupings
-
8
render 'articles/groupings'
-
end
-
end
-
end
-
end
-
-
1
def render_articles
-
32
respond_to do |format|
-
32
format.html do
-
28
if @articles.empty?
-
3
redirect_to this_blog.base_url, :status => 301
-
3
return
-
end
-
-
25
render active_template
-
-
end
-
-
34
format.atom { render_feed 'atom', @articles }
-
34
format.rss { render_feed 'rss', @articles }
-
end
-
end
-
-
1
def render_feed(format, collection)
-
4
@articles = collection[0,this_blog.limit_rss_display]
-
4
render "articles/index_#{format}_feed", :layout => false
-
end
-
-
1
def render_empty
-
1
@articles = []
-
1
render_articles
-
end
-
-
1
private
-
1
def set_noindex page = nil
-
# irk there must be a better way to do this
-
46
return 1 if (grouping_class.to_s.downcase == "tag" and this_blog.unindex_tags)
-
44
return 1 if (grouping_class.to_s.downcase == "category" and this_blog.unindex_categories)
-
42
return 1 unless page.blank?
-
end
-
-
1
def active_template
-
25
return params[:id] if template_exists? "#{self.class.to_s.sub(/Controller$/,'').downcase}/#{params[:id]}"
-
25
return 'show' if template_exists? "#{self.class.to_s.sub(/Controller$/,'').downcase}/show"
-
2
'articles/index'
-
end
-
end
-
1
class SetupController < ApplicationController
-
1
before_filter :check_config, :only => 'index'
-
1
layout 'accounts'
-
-
1
def index
-
6
return if not request.post?
-
-
5
this_blog.blog_name = params[:setting][:blog_name]
-
5
this_blog.base_url = blog_base_url
-
-
5
@user = User.new(:login => 'admin', :email => params[:setting][:email])
-
5
@user.password = generate_password
-
5
@user.name = @user.login
-
-
5
unless this_blog.valid? and @user.valid?
-
2
redirect_to :action => 'index'
-
2
return
-
end
-
-
3
return unless this_blog.save
-
-
3
session[:tmppass] = @user.password
-
-
3
return unless @user.save
-
-
3
self.current_user = @user
-
3
session[:user_id] = @user.id
-
-
# FIXME: Crappy hack : by default, the auto generated post is user_id less and it makes Typo crash
-
3
if User.count == 1
-
3
art = Article.find(:first)
-
3
art.user_id = @user.id
-
3
art.save
-
end
-
3
redirect_to :action => 'confirm'
-
end
-
-
1
private
-
1
def generate_password
-
5
chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a
-
5
newpass = ""
-
40
1.upto(7) { |i| newpass << chars[rand(chars.size-1)] }
-
5
return newpass
-
end
-
-
1
def check_config
-
9
return unless this_blog.configured?
-
3
redirect_to :controller => 'articles', :action => 'index'
-
end
-
end
-
1
class TagsController < GroupingController
-
# index, #show are inherited
-
end
-
# TODO: Remove
-
1
class TextfilterController < ApplicationController
-
end
-
-
1
class ThemeController < ContentController
-
-
1
def stylesheets
-
2
render_theme_item(:stylesheets, params[:filename], 'text/css; charset=utf-8')
-
end
-
-
1
def javascript
-
render_theme_item(:javascript, params[:filename], 'text/javascript; charset=utf-8')
-
end
-
-
1
def images
-
1
render_theme_item(:images, params[:filename])
-
end
-
-
1
def error
-
render :nothing => true, :status => 404
-
end
-
-
1
def static_view_test
-
end
-
-
1
private
-
-
1
def render_theme_item(type, file, mime = nil)
-
3
mime ||= mime_for(file)
-
3
if file.split(%r{[\\/]}).include?("..")
-
1
return (render "errors/404", :status => 404)
-
end
-
-
2
src = this_blog.current_theme.path + "/#{type}/#{file}"
-
2
return (render :text => "Not Found", :status => 404) unless File.exists? src
-
-
2
if perform_caching
-
cache_page File.read(src)
-
end
-
-
2
send_file(src, :type => mime, :disposition => 'inline', :stream => true)
-
end
-
-
1
def mime_for(filename)
-
1
case filename.downcase
-
when /\.js$/
-
'text/javascript'
-
when /\.css$/
-
'text/css'
-
when /\.gif$/
-
'image/gif'
-
when /(\.jpg|\.jpeg)$/
-
'image/jpeg'
-
when /\.png$/
-
1
'image/png'
-
when /\.swf$/
-
'application/x-shockwave-flash'
-
else
-
'application/binary'
-
end
-
end
-
end
-
-
1
class TrackbacksController < FeedbackController
-
1
def create
-
@error_message = catch(:error) do
-
if this_blog.global_pings_disable
-
throw :error, "Trackback not saved"
-
elsif params[:__mode] == 'rss'
-
# Part of the trackback spec... not sure what we should be doing here though.
-
else
-
begin
-
@trackback = this_blog.ping_article!(
-
params.merge(:ip => request.remote_ip, :published => true))
-
""
-
rescue ActiveRecord::RecordNotFound, ActiveRecord::StatementInvalid
-
throw :error, "Article id #{params[:id]} not found."
-
rescue ActiveRecord::RecordInvalid
-
throw :error, "Trackback not saved"
-
end
-
end
-
end
-
-
respond_to do |format|
-
format.xml { render 'trackback.xml.builder' }
-
format.html { render :nothing => true }
-
end
-
end
-
-
1
protected
-
-
1
def get_feedback
-
6
@trackbacks =
-
if params[:article_id]
-
Article.find(params[:article_id]).published_trackbacks
-
else
-
6
Trackback.find_published(:all, this_blog.rss_limit_params.merge(:order => 'created_at DESC'))
-
end
-
end
-
-
1
def get_article
-
true
-
end
-
end
-
1
class XmlController < ApplicationController
-
1
caches_page :feed, :if => Proc.new {|c|
-
c.request.query_string == ''
-
}
-
-
1
NORMALIZED_FORMAT_FOR = {'atom' => 'atom', 'rss' => 'rss',
-
'atom10' => 'atom', 'atom03' => 'atom', 'rss20' => 'rss',
-
'googlesitemap' => 'googlesitemap', 'rsd' => 'rsd' }
-
-
1
CONTENT_TYPE_FOR = { 'rss' => 'application/xml',
-
'atom' => 'application/atom+xml',
-
'googlesitemap' => 'application/xml' }
-
-
1
def feed
-
23
adjust_format
-
23
@format = params[:format]
-
-
23
unless @format
-
1
return render(:text => 'Unsupported format', :status => 404)
-
end
-
-
# TODO: Move redirects into config/routes.rb, if possible
-
22
case params[:type]
-
when 'feed'
-
4
redirect_to :controller => 'articles', :action => 'index', :format => @format, :status => :moved_permanently
-
when 'comments'
-
3
redirect_to admin_comments_url(:format => @format), :status => :moved_permanently
-
when 'article'
-
3
redirect_to Article.find(params[:id]).permalink_by_format(@format), :status => :moved_permanently
-
when 'category', 'tag', 'author'
-
6
redirect_to self.send("#{params[:type]}_url", params[:id], :format => @format), :status => :moved_permanently
-
when 'trackbacks'
-
3
redirect_to trackbacks_url(:format => @format), :status => :moved_permanently
-
when 'sitemap'
-
2
prep_sitemap
-
-
2
respond_to do |format|
-
2
format.googlesitemap
-
end
-
else
-
1
return render(:text => 'Unsupported feed type', :status => 404)
-
end
-
end
-
-
# TODO: Move redirects into config/routes.rb, if possible
-
1
def articlerss
-
1
redirect_to Article.find(params[:id]).permalink_by_format('rss'), :status => :moved_permanently
-
end
-
-
1
def commentrss
-
1
redirect_to admin_comments_url(:format => 'rss'), :status => :moved_permanently
-
end
-
-
1
def trackbackrss
-
1
redirect_to trackbacks_url(:format => 'rss'), :status => :moved_permanently
-
end
-
-
1
def rsd
-
2
render "rsd.rsd.builder"
-
end
-
-
1
protected
-
-
1
def adjust_format
-
23
if params[:format]
-
17
params[:format] = NORMALIZED_FORMAT_FOR[params[:format]]
-
else
-
6
params[:format] = 'rss'
-
end
-
23
request.format = params[:format] if params[:format]
-
23
return true
-
end
-
-
1
def fetch_items(association, order='published_at DESC', limit=nil)
-
4
if association.instance_of?(Symbol)
-
4
association = association.to_s.singularize.classify.constantize
-
end
-
4
limit ||= this_blog.limit_rss_display
-
4
@items += association.find_already_published(:all, :limit => limit, :order => order)
-
end
-
-
1
def prep_sitemap
-
2
@items = Array.new
-
2
@blog = this_blog
-
-
2
@feed_title = this_blog.blog_name
-
2
@link = this_blog.base_url
-
2
@self_url = url_for(params)
-
-
2
fetch_items(:articles, 'created_at DESC', 1000)
-
2
fetch_items(:pages, 'created_at DESC', 1000)
-
-
2
@items += Category.find_all_with_article_counters(1000) unless this_blog.unindex_categories
-
2
@items += Tag.find_all_with_article_counters(1000) unless this_blog.unindex_tags
-
end
-
end
-
# coding: utf-8
-
1
module AccountsHelper
-
1
def display_accounts_link
-
html = ""
-
html << link_to("<small>#{_("Create an account")}</small>".html_safe, :action => 'signup') if this_blog.allow_signup == 1
-
html << link_to("<small> • #{_("I've lost my password")}</small>".html_safe, :action => 'recover_password')
-
html.html_safe
-
end
-
-
end
-
1
module Admin::BaseHelper
-
1
include ActionView::Helpers::DateHelper
-
-
1
def subtabs_for(current_module)
-
480
output = []
-
480
AccessControl.project_module(current_user.profile_label, current_module).submenus.each_with_index do |m,i|
-
1584
next if m.name.empty?
-
1512
current =
-
output << subtab(_(m.name), (m.url[:controller] == params[:controller] && m.url[:action] == params[:action]) ? '' : m.url)
-
end
-
480
output.join("\n").html_safe
-
end
-
-
1
def subtab(label, options = {})
-
1512
return content_tag :li, "<span class='subtabs'>#{label}</span>".html_safe if options.empty?
-
1464
content_tag :li, link_to(label, options)
-
end
-
-
1
def show_page_heading
-
88
return if @page_heading.nil? or @page_heading.blank?
-
83
heading = "<div class='page-header'>"
-
83
heading << content_tag(:h2, @page_heading.html_safe)
-
83
heading << "</div>"
-
end
-
-
1
def cancel(url = {:action => 'index'})
-
43
link_to _("Cancel"), url, :class => 'btn'
-
end
-
-
1
def save(val = _("Store"))
-
42
'<input type="submit" value="' + val + '" class="btn primary" />'
-
end
-
-
1
def link_to_edit(label, record, controller = controller.controller_name)
-
22
link_to label, {:controller => controller, :action => 'edit', :id => record.id}, :class => 'edit'
-
end
-
-
1
def link_to_edit_with_profiles(label, record, controller = controller.controller_name)
-
if current_user.admin? || current_user.id == record.user_id
-
link_to label, {:controller => controller, :action => 'edit', :id => record.id}, :class => 'edit'
-
end
-
end
-
-
1
def link_to_destroy(record, controller = controller.controller_name)
-
link_to image_tag('admin/delete.png', :alt => _("delete"), :title => _("Delete content")),
-
:controller => controller, :action => 'destroy', :id => record.id
-
end
-
-
1
def link_to_destroy_with_profiles(record, controller = controller.controller_name)
-
4
if current_user.admin? || current_user.id == record.user_id
-
4
link_to(_("delete"),
-
{ :controller => controller, :action => 'destroy', :id => record.id }, :confirm => _("Are you sure?"), :method => :post, :class => 'btn danger', :title => _("Delete content"))
-
end
-
end
-
-
1
def text_filter_options
-
15
TextFilter.all.collect do |filter|
-
37
[ filter.description, filter ]
-
end
-
end
-
-
1
def text_filter_options_with_id
-
5
TextFilter.all.collect do |filter|
-
15
[ filter.description, filter.id ]
-
end
-
end
-
-
1
def plugin_options(kind, blank = true)
-
1
r = TypoPlugins::Keeper.available_plugins(kind).collect do |plugin|
-
1
[ plugin.name, plugin.to_s ]
-
end
-
1
blank ? r << [_("none"),''] : r
-
end
-
-
1
def alternate_class
-
45
@class = @class != '' ? '' : 'class="shade"'
-
end
-
-
1
def task_overview
-
content_tag :li, link_to(_('Back to list'), :action => 'index')
-
end
-
-
1
def class_tab
-
393
''
-
end
-
-
1
def class_selected_tab
-
87
'active'
-
end
-
-
1
def class_articles
-
88
if controller.controller_name =~ /content|tags|categories|feedback|post_type/
-
60
return class_selected_tab if controller.action_name =~ /list|index|show|article|destroy|new|edit/
-
end
-
28
class_tab
-
end
-
-
1
def class_media
-
88
if controller.controller_name =~ /resources/
-
3
return class_selected_tab
-
end
-
85
class_tab
-
end
-
-
1
def class_pages
-
88
if controller.controller_name =~ /pages/
-
6
return class_selected_tab if controller.action_name =~ /index|destroy|new|edit/
-
end
-
82
class_tab
-
end
-
-
1
def class_themes
-
72
return class_selected_tab if controller.controller_name =~ /themes|sidebar/
-
70
class_tab
-
end
-
-
1
def class_dashboard
-
return class_selected_tab if controller.controller_name =~ /dashboard/
-
class_tab
-
end
-
-
1
def class_settings
-
72
return class_selected_tab if controller.controller_name =~ /settings|users|cache|redirects/
-
59
class_tab
-
end
-
-
1
def class_profile
-
return class_selected_tab if controller.controller_name =~ /profiles/
-
class_tab
-
end
-
-
1
def class_seo
-
72
return class_selected_tab if controller.controller_name =~ /seo/
-
69
class_tab
-
end
-
-
1
def collection_select_with_current(object, method, collection, value_method, text_method, current_value, prompt=false)
-
60
result = "<select name='#{object}[#{method}]'>\n"
-
-
60
if prompt == true
-
60
result << "<option value=''>" << _("Please select") << "</option>"
-
end
-
60
for element in collection
-
48
if current_value and current_value == element.send(value_method)
-
result << "<option value='#{element.send(value_method)}' selected='selected'>#{element.send(text_method)}</option>\n"
-
else
-
48
result << "<option value='#{element.send(value_method)}'>#{element.send(text_method)}</option>\n"
-
end
-
end
-
60
result << "</select>\n"
-
60
return result
-
end
-
-
1
def render_void_table(size, cols)
-
39
if size == 0
-
10
"<tr>\n<td colspan=#{cols}>" + _("There are no %s yet. Why don't you start and create one?", _(controller.controller_name)) + "</td>\n</tr>\n"
-
end
-
end
-
-
1
def cancel_or_save(message=_("Save"))
-
21
result = cancel
-
21
result << " "
-
21
result << _("or")
-
21
result << " "
-
21
result << save(message)
-
21
return result
-
end
-
-
1
def get_short_url(item)
-
18
return "" if item.short_url.nil?
-
10
sprintf("<small>%s %s</small>", _("Short url:"), link_to(item.short_url, item.short_url))
-
end
-
-
1
def show_actions item
-
18
html = <<-HTML
-
<div class='action'>
-
<small>#{link_to_published item}</small> |
-
<small>#{link_to _("Edit"), :action => 'edit', :id => item.id}</small> |
-
<small>#{link_to _("Delete"), :action => 'destroy', :id => item.id}</small> |
-
#{get_short_url item}
-
</div>
-
HTML
-
end
-
-
1
def format_date(date)
-
18
date.strftime('%d/%m/%Y')
-
end
-
-
1
def format_date_time(date)
-
10
date.strftime('%d/%m/%Y %H:%M')
-
end
-
-
1
def link_to_published(item)
-
18
return link_to_permalink(item, _("Show"), nil, 'published') if item.published
-
8
link_to(_("Preview"), {:controller => '/articles', :action => 'preview', :id => item.id}, {:class => 'unpublished', :target => '_new'})
-
end
-
-
1
def published_or_not(item)
-
28
return "<span class='label success'>#{_("Published")}</span>" if item.state.to_s.downcase == 'published'
-
18
return "<span class='label notice'>#{_("Draft")}</span>" if item.state.to_s.downcase == 'draft'
-
16
return "<span class='label important'>#{_("Withdrawn")}</span>" if item.state.to_s.downcase == 'withdrawn'
-
12
return "<span class='label warning'>#{_("Publication pending")}</span>" if item.state.to_s.downcase == 'publicationpending'
-
end
-
-
1
def macro_help_popup(macro, text)
-
18
unless current_user.editor == 'visual'
-
18
"<a href=\"#{url_for :controller => 'textfilters', :action => 'macro_help', :id => macro.short_name}\" onclick=\"return popup(this, 'Typo Macro Help')\">#{text}</a>"
-
end
-
end
-
-
1
def render_macros(macros)
-
12
result = link_to_function _("Show help on Typo macros") + " (+/-)",update_page { |page| page.visual_effect(:toggle_blind, "macros", :duration => 0.2) }
-
6
result << "<table id='macros' style='display: none;'>"
-
6
result << "<tr>"
-
6
result << "<th>#{_('Name')}</th>"
-
6
result << "<th>#{_('Description')}</th>"
-
6
result << "<th>#{_('Tag')}</th>"
-
6
result << "</tr>"
-
-
24
for macro in macros.sort_by { |f| f.short_name }
-
18
result << "<tr #{alternate_class}>"
-
18
result << "<td>#{macro_help_popup macro, macro.display_name}</td>"
-
18
result << "<td>#{h macro.description}</td>"
-
18
result << "<td><code><typo:#{h macro.short_name}></code></td>"
-
18
result << "</tr>"
-
end
-
6
result << "</table>"
-
end
-
-
1
def build_editor_link(label, action, id, update, editor)
-
28
link = link_to_remote(label,
-
:url => { :action => action, 'editor' => editor},
-
:class => 'ui-button-text',
-
:loading => "new Element.show('update_spinner_#{id}')",
-
:success => "new Element.toggle('update_spinner_#{id}')",
-
:update => "#{update}")
-
28
link << image_tag("spinner-blue.gif", :id => "update_spinner_#{id}", :style => 'display:none;')
-
end
-
-
1
def display_pagination(collection, cols, first='', last='')
-
34
"<tr><td class='#{first} #{last}' colspan=#{cols} class='paginate'>#{paginate(collection)}</td></tr>"
-
end
-
-
1
def show_thumbnail_for_editor(image)
-
2
thumb = "#{::Rails.root.to_s}/public/files/thumb_#{image.filename}"
-
2
picture = "#{this_blog.base_url}/files/#{image.filename}"
-
-
2
image.create_thumbnail unless File.exists? thumb
-
-
# If something went wrong with thumbnail generation, we just display a place holder
-
2
thumbnail = (File.exists? thumb) ? "#{this_blog.base_url}/files/thumb_#{image.filename}" : "#{this_blog.base_url}/images/thumb_blank.jpg"
-
-
2
picture = "<a onclick=\"edInsertImageFromCarousel('article_body_and_extended', '#{this_blog.base_url}/files/#{image.filename}');\" />"
-
2
picture << "<img class='tumb' src='#{thumbnail}' "
-
2
picture << "alt='#{this_blog.base_url}/files/#{image.filename}' />"
-
2
picture << "</a>"
-
2
return picture
-
end
-
-
1
def save_settings
-
6
"<div class='actions'>#{cancel} #{_("or")} #{save(_("Update settings"))}</div>".html_safe
-
end
-
end
-
1
module Admin::CategoriesHelper
-
1
def show_category_actions item
-
3
html = <<-HTML
-
<div class='action'>
-
<small>#{link_to_permalink item, pluralize(item.articles.size, _('no articles') , _('1 article'), __('%d articles'))}</small> |
-
<small>#{link_to _("Edit"), :action => 'edit', :id => item.id}</small> |
-
<small>#{link_to _("Delete"), :action => 'destroy', :id => item.id}</small>
-
</div>
-
HTML
-
end
-
-
end
-
1
module Admin::ContentHelper
-
1
def link_to_destroy_draft(record, controller = controller.controller_name)
-
14
return unless record.state.to_s.downcase == "draft"
-
6
link_to(_("Destroy this draft"),
-
{ :controller => controller, :action => 'destroy', :id => record.id },
-
:confirm => _("Are you sure?"), :method => :post, :class => 'btn danger' )
-
end
-
-
1
def auto_complete_result(entries, field, phrase = nil)
-
3
return unless entries
-
6
items = entries.map { |entry| content_tag("li", phrase ? highlight(entry[field], phrase) : h(entry[field])) }
-
3
content_tag("ul", items.uniq.join.html_safe, {:class => 'unstyled', :id => 'autocomplete'})
-
end
-
-
1
def auto_complete_field(field_id, options = {})
-
8
function = "var #{field_id}_auto_completer = new Ajax.Autocompleter("
-
8
function << "'#{field_id}', "
-
8
function << "'" + (options[:update] || "#{field_id}_auto_complete") + "', "
-
8
function << "'#{url_for(options[:url])}'"
-
-
8
js_options = {}
-
8
js_options[:tokens] = array_or_string_for_javascript(options[:tokens]) if options[:tokens]
-
8
js_options[:callback] = "function(element, value) { return #{options[:with]} }" if options[:with]
-
8
js_options[:indicator] = "'#{options[:indicator]}'" if options[:indicator]
-
8
js_options[:select] = "'#{options[:select]}'" if options[:select]
-
8
js_options[:paramName] = "'#{options[:param_name]}'" if options[:param_name]
-
8
js_options[:frequency] = "#{options[:frequency]}" if options[:frequency]
-
8
js_options[:method] = "'#{options[:method].to_s}'" if options[:method]
-
-
{ :after_update_element => :afterUpdateElement,
-
8
:on_show => :onShow, :on_hide => :onHide, :min_chars => :minChars }.each do |k,v|
-
32
js_options[v] = options[k] if options[k]
-
end
-
-
8
function << (', ' + options_for_javascript(js_options) + ')')
-
-
8
javascript_tag(function)
-
end
-
-
1
def get_post_types
-
8
post_types = @post_types || []
-
8
if post_types.size.zero?
-
8
return hidden_field_tag "article[post_type]", "read"
-
end
-
-
html = "<div class='well'>"
-
html << content_tag(:h4, _("Article type"))
-
html << "<select name=article[post_type]>"
-
-
post_types.each do |pt|
-
html << "<option value='read' #{'selected' if @article.post_type == 'read'} >#{_('Default')}</option>"
-
html << "<option #{'selected' if @article.post_type == pt.permalink} value='#{pt.permalink}'>#{pt.name}</option>"
-
end
-
-
html << "</select>"
-
html << "</div>"
-
end
-
end
-
1
module Admin::FeedbackHelper
-
1
def comment_class state
-
10
return 'notice' if state.to_s.downcase == 'ham?'
-
8
return 'warning' if state.to_s.downcase == 'spam?'
-
6
return 'success' if state.to_s.downcase == 'ham'
-
return 'important'
-
end
-
-
1
def show_feedback_actions(item, context='listing')
-
10
html = <<-HTML
-
<small>
-
-
#{published_or_not item} |
-
#{change_status(item, context)} |
-
#{link_to _("Edit"), :controller => 'admin/feedback', :action => 'edit', :id => item.id} |
-
#{link_to _("Delete"), :controller => 'admin/feedback', :action => 'destroy', :id => item.id }|
-
#{link_to _("Show conversation"), :controller => 'admin/feedback', :action => 'article', :id => item.article_id}
-
</small>
-
HTML
-
end
-
-
1
def filter_link(text, filter='', style='')
-
-
return content_tag(:span, text, {:class => 'label'}) unless [params[:published], params[:confirmed], params[:ham], params[:spam], params[:presumed_ham], params[:presumed_spam]].include?('f')
-
end
-
-
1
def change_status(item, context='listing')
-
10
status = (item.state == :spam) ? :ham : :spam
-
10
link_to_remote(_("Flag as %s", status.to_s), :url => {:controller => 'admin/feedback',:action => 'change_state', :id => item.id, :context => context})
-
end
-
end
-
1
module Admin::PostTypesHelper
-
1
def show_post_types_actions item
-
html = <<-HTML
-
<div class='action'>
-
<small>#{link_to _("Edit"), :action => 'edit', :id => item.id}</small> |
-
<small>#{link_to _("Delete"), :action => 'destroy', :id => item.id}</small>
-
</div>
-
HTML
-
end
-
-
end
-
1
module Admin::RedirectsHelper
-
1
def show_redirect_actions item
-
1
html = <<-HTML
-
<div class='action'>
-
<small>#{link_to _("Edit"), :action => 'edit', :id => item.id}</small> |
-
<small>#{link_to _("Delete"), :action => 'destroy', :id => item.id}</small>
-
</div>
-
HTML
-
end
-
-
end
-
1
module Admin::ResourcesHelper
-
1
def show_thumbnail(image)
-
image.create_thumbnail
-
"<img class='tumb' src='#{this_blog.base_url}/files/thumb_#{image.filename}' alt='#{this_blog.base_url}/files/#{image.filename}' />"
-
end
-
-
end
-
1
module Admin::SeoHelper
-
1
def robot_writable?
-
1
File.writable?"#{::Rails.root.to_s}/public/robots.txt"
-
end
-
-
-
end
-
1
module Admin::SettingsHelper
-
1
require 'find'
-
-
1
def fetch_langs
-
1
options = content_tag(:option, "Select lang", :value => 'en_US')
-
1
Find.find(::Rails.root.to_s + "/lang") do |lang|
-
15
if lang =~ /\.rb$/
-
14
lang_pattern = File.basename(lang).gsub(".rb", '')
-
14
if this_blog.lang == lang_pattern
-
1
options << content_tag(:option, _(lang_pattern.to_s), :value => lang_pattern, :selected => 'selected')
-
else
-
13
options << content_tag(:option, _(lang_pattern.to_s), :value => lang_pattern)
-
end
-
end
-
end
-
1
options
-
end
-
-
1
def show_rss_description
-
2
Article.first.get_rss_description rescue ""
-
end
-
end
-
1
module Admin::TagHelper
-
1
def show_tag_actions item
-
html = <<-HTML
-
<div class='action'>
-
<small>#{link_to_permalink item, _("Show")}</small> |
-
<small>#{link_to _("Edit"), :action => 'edit', :id => item.id}</small> |
-
<small>#{link_to _("Delete"), :action => 'destroy', :id => item.id}</small>
-
</div>
-
HTML
-
end
-
end
-
1
module Admin::UsersHelper
-
1
def get_select(needle, haystack)
-
20
return 'selected="selected"' if needle.to_s == haystack.to_s
-
end
-
-
1
def render_options_for_display_name
-
4
options = "<option value='#{@user.login}' #{get_select(@user.name, @user.login)}>#{@user.login}</option>"
-
4
options << "<option value='#{@user.nickname}' #{get_select(@user.name, @user.nickname)}>#{@user.nickname}</option>" unless @user.nickname.nil?
-
4
options << "<option value='#{@user.firstname}' #{get_select(@user.name, @user.firstname)}>#{@user.firstname}</option>" unless @user.firstname.nil?
-
4
options << "<option value='#{@user.lastname}' #{get_select(@user.name, @user.lastname)}>#{@user.lastname}</option>" unless @user.lastname.nil?
-
4
options << "<option value='#{@user.firstname} #{@user.lastname}' #{get_select(@user.name, @user.firstname + @user.lastname)}>#{@user.firstname} #{@user.lastname}</option>" unless (@user.firstname.nil? or @user.lastname.nil?)
-
4
return options
-
end
-
end
-
# coding: utf-8
-
# Methods added to this helper will be available to all templates in the application.
-
1
require 'digest/sha1'
-
-
1
module ApplicationHelper
-
# Basic english pluralizer.
-
# Axe?
-
-
1
def pluralize(size, zero, one , many )
-
191
case size
-
161
when 0 then zero
-
when 1 then one
-
30
else sprintf(many, size)
-
end
-
end
-
-
# Produce a link to the permalink_url of 'item'.
-
1
def link_to_permalink(item, title, anchor=nil, style=nil, nofollow=nil)
-
545
options = {}
-
545
options[:class] = style if style
-
545
options[:rel] = "nofollow" if nofollow
-
-
545
link_to title, item.permalink_url(anchor), options
-
end
-
-
# The '5 comments' link from the bottom of articles
-
1
def comments_link(article)
-
28
comment_count = article.published_comments.size
-
# FIXME Why using own pluralize metchod when the Localize._ provides the same funciotnality, but better? (by simply calling _('%d comments', comment_count) and using the en translation: l.store "%d comments", ["No nomments", "1 comment", "%d comments"])
-
28
link_to_permalink(article,pluralize(comment_count, _('no comments'), _('1 comment'), _('%d comments', comment_count)),'comments')
-
end
-
-
# wrapper for TypoPlugins::Avatar
-
# options is a hash which should contain :email and :url for the plugin
-
# (gravatar will use :email, pavatar will use :url, etc.)
-
1
def avatar_tag(options = {})
-
182
avatar_class = this_blog.plugin_avatar.constantize
-
182
return '' unless avatar_class.respond_to?(:get_avatar)
-
avatar_class.get_avatar(options)
-
end
-
-
1
def trackbacks_link(article)
-
14
trackbacks_count = article.published_trackbacks.size
-
14
link_to_permalink(article,pluralize(trackbacks_count, _('no trackbacks'), _('1 trackback'), _('%d trackbacks',trackbacks_count)),'trackbacks')
-
end
-
-
1
def meta_tag(name, value)
-
53
tag :meta, :name => name, :content => value unless value.blank?
-
end
-
-
1
def date(date)
-
"<span class=\"typo_date\">" + date.utc.strftime(_("%%d. %%b", date.utc)) + "</span>"
-
end
-
-
1
def toggle_effect(domid, true_effect, true_opts, false_effect, false_opts)
-
"$('#{domid}').style.display == 'none' ? new #{false_effect}('#{domid}', {#{false_opts}}) : new #{true_effect}('#{domid}', {#{true_opts}}); return false;"
-
end
-
-
1
def markup_help_popup(markup, text)
-
if markup and markup.commenthelp.size > 1
-
"<a href=\"#{url_for :controller => 'articles', :action => 'markup_help', :id => markup.id}\" onclick=\"return popup(this, 'Typo Markup Help')\">#{text}</a>"
-
else
-
''
-
end
-
end
-
-
1
def admin_tools_for(model)
-
type = model.class.to_s.downcase
-
tag = []
-
tag << content_tag("div",
-
link_to_remote('nuke', {
-
:url => {
-
:controller => "admin/feedback",
-
:action => "delete",
-
:id => model.id },
-
:method => :post,
-
:confirm => _("Are you sure you want to delete this %s?", "#{type}" )
-
}, :class => "admintools") <<
-
link_to('edit', {
-
:controller => "admin/feedback",
-
:action => "edit", :id => model.id
-
}, :class => "admintools"),
-
:id => "admin_#{type}_#{model.id}", :style => "display: none")
-
tag.join(" | ")
-
end
-
-
1
def onhover_show_admin_tools(type, id = nil)
-
tag = []
-
tag << %{ onmouseover="if (getCookie('typo_user_profile') == 'admin') { Element.show('admin_#{[type, id].compact.join('_')}'); }" }
-
tag << %{ onmouseout="Element.hide('admin_#{[type, id].compact.join('_')}');" }
-
tag
-
end
-
-
1
def render_flash
-
3
output = []
-
-
for key,value in flash
-
3
output << "<span class=\"#{key.to_s.downcase}\">#{h(value)}</span>"
-
3
end if flash
-
-
3
output.join("<br />\n")
-
end
-
-
1
def feed_title
-
case
-
when @feed_title
-
return @feed_title
-
66
when (@page_title and not @page_title.blank?)
-
2
return "#{this_blog.blog_name} : #{@page_title}"
-
else
-
64
return this_blog.blog_name
-
66
end
-
end
-
-
1
def html(content, what = :all, deprecated = false)
-
content.html(what)
-
end
-
-
1
def author_link(article)
-
121
if this_blog.link_to_author and article.user and article.user.email.to_s.size>0
-
"<a href=\"mailto:#{h article.user.email}\">#{h article.user.name}</a>"
-
121
elsif article.user and article.user.name.to_s.size>0
-
121
h article.user.name
-
else
-
h article.author
-
end
-
end
-
-
1
def google_analytics
-
77
unless this_blog.google_analytics.empty?
-
<<-HTML
-
<script type="text/javascript">
-
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
-
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
-
</script>
-
<script type="text/javascript">
-
var pageTracker = _gat._getTracker("#{this_blog.google_analytics}");
-
pageTracker._trackPageview();
-
</script>
-
HTML
-
end
-
end
-
-
1
def javascript_include_lang
-
77
javascript_include_tag "lang/#{Localization.lang.to_s}" if File.exists? File.join(::Rails.root.to_s, 'public', 'lang', Localization.lang.to_s)
-
end
-
-
1
def use_canonical
-
77
"<link rel='canonical' href='#{@canonical_url}' />".html_safe unless @canonical_url.nil?
-
end
-
-
1
def page_header
-
143
page_header_includes = content_array.collect { |c| c.whiteboard }.collect do |w|
-
66
w.select {|k,v| k =~ /^page_header_/}.collect do |(k,v)|
-
v = v.chomp
-
# trim the same number of spaces from the beginning of each line
-
# this way plugins can indent nicely without making ugly source output
-
spaces = /\A[ \t]*/.match(v)[0].gsub(/\t/, " ")
-
v.gsub!(/^#{spaces}/, ' ') # add 2 spaces to line up with the assumed position of the surrounding tags
-
end
-
end.flatten.uniq
-
(
-
<<-HTML
-
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-
77
#{ meta_tag 'ICBM', this_blog.geourl_location unless this_blog.geourl_location.blank? }
-
#{ meta_tag 'description', @description unless @description.blank? }
-
#{ meta_tag 'robots', 'noindex, follow' unless @noindex.nil? }
-
#{ meta_tag 'google-site-verification', this_blog.google_verification unless this_blog.google_verification.blank?}
-
<meta name="generator" content="Typo #{TYPO_VERSION}" />
-
#{ show_meta_keyword }
-
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="#{ url_for :controller => '/xml', :action => 'rsd' }" />
-
<link rel="alternate" type="application/atom+xml" title="Atom" href="#{ feed_atom }" />
-
<link rel="alternate" type="application/rss+xml" title="RSS" href="#{ feed_rss }" />
-
#{ javascript_include_tag 'cookies', 'prototype', 'effects', 'builder', 'typo' }
-
#{ stylesheet_link_tag 'coderay', 'user-styles' }
-
#{ javascript_include_lang }
-
#{ javascript_tag "window._token = '#{form_authenticity_token}'"}
-
#{ page_header_includes.join("\n") }
-
#{ use_canonical if this_blog.use_canonical_url }
-
<script type="text/javascript">#{ @content_for_script }</script>
-
#{ this_blog.custom_tracking_field unless this_blog.custom_tracking_field.blank? }
-
#{ google_analytics }
-
HTML
-
).chomp
-
end
-
-
1
def feed_atom
-
77
if params[:action] == 'search'
-
9
url_for(:only_path => false, :format => 'atom', :q => params[:q])
-
68
elsif not @article.nil?
-
15
@article.feed_url(:atom)
-
53
elsif not @auto_discovery_url_atom.nil?
-
48
@auto_discovery_url_atom
-
else
-
# FIXME: When is this invoked?
-
5
url_for(:only_path => false, :format => 'atom')
-
end
-
end
-
-
1
def feed_rss
-
77
if params[:action] == 'search'
-
9
url_for(:only_path => false, :format => 'rss', :q => params[:q])
-
68
elsif not @article.nil?
-
15
@article.feed_url(:rss20)
-
53
elsif not @auto_discovery_url_rss.nil?
-
48
@auto_discovery_url_rss
-
else
-
5
url_for(:only_path => false, :format => 'rss')
-
end
-
end
-
-
1
def render_the_flash
-
88
return unless flash[:notice] or flash[:error] or flash[:warning]
-
the_class = flash[:error] ? 'error' : 'success'
-
-
html = "<div class='alert-message #{the_class}'>"
-
html << "<a class='close' href='#'>×</a>"
-
html << render_flash rescue nil
-
html << "</div>"
-
end
-
-
1
def content_array
-
77
if @articles
-
43
@articles
-
34
elsif @article
-
15
[@article]
-
19
elsif @page
-
[@page]
-
else
-
19
[]
-
end
-
end
-
-
1
def new_js_distance_of_time_in_words_to_now(date)
-
time = _(date.utc.strftime(_("%%a, %%d %%b %%Y %%H:%%M:%%S GMT", date.utc)))
-
timestamp = date.utc.to_i ;
-
"<span class=\"typo_date date gmttimestamp-#{timestamp}\" title=\"#{time}\" >#{time}</span>"
-
end
-
-
1
def display_date(date)
-
4
date.strftime(this_blog.date_format)
-
end
-
-
1
def display_time(time)
-
3
time.strftime(this_blog.time_format)
-
end
-
-
1
def display_date_and_time(timestamp)
-
return new_js_distance_of_time_in_words_to_now(timestamp) if this_blog.date_format == 'distance_of_time_in_words'
-
"#{display_date(timestamp)} #{_('at')} #{display_time(timestamp)}"
-
end
-
-
1
def js_distance_of_time_in_words_to_now(date)
-
display_date_and_time date
-
end
-
-
1
def show_meta_keyword
-
77
return unless this_blog.use_meta_keyword
-
66
meta_tag 'keywords', @keywords unless @keywords.blank?
-
end
-
-
1
def show_menu_for_post_type(posttype, before='<li>', after='</li>')
-
list = Article.find(:all, :conditions => ['post_type = ?', post_type])
-
html = ''
-
-
return if list.size.zero?
-
list.each do |item|
-
html << before
-
html << link_to_permalink(item, item.title)
-
html << after
-
end
-
-
html
-
end
-
-
1
def this_blog
-
7
@blog ||= Blog.default
-
end
-
-
1
def will_paginate(items, params = {})
-
paginate(items, params)
-
end
-
end
-
1
module AuthorsHelper
-
-
1
def display_profile_item(item, show_item, item_desc)
-
27
if show_item
-
2
item = link_to(item, item) if is_url?(item)
-
2
content_tag :li do
-
2
"#{item_desc} #{item}"
-
end
-
end
-
end
-
-
1
def is_url?(str)
-
2
begin
-
2
[URI::HTTP, URI::HTTPS].include?(URI.parse(str.to_s).class)
-
rescue URI::InvalidURIError
-
false
-
end
-
end
-
end
-
1
require 'digest/sha1'
-
1
module ContentHelper
-
# Need to rewrite this one, quick hack to test my changes.
-
1
def page_title
-
77
@page_title
-
end
-
-
1
include SidebarHelper
-
-
1
def article_links(article, separator=" <strong>|</strong> ")
-
code = []
-
code << category_links(article) unless article.categories.empty?
-
code << tag_links(article) unless article.tags.empty?
-
code << comments_link(article) if article.allow_comments?
-
code << trackbacks_link(article) if article.allow_pings?
-
code.join(separator)
-
end
-
-
1
def category_links(article, prefix="Posted in")
-
16
_(prefix) + " " + article.categories.map { |c| link_to h(c.name), category_url(c), :rel => 'tag'}.join(", ")
-
end
-
-
1
def tag_links(article, prefix="Tags")
-
20
_(prefix) + " " + article.tags.map { |tag| link_to tag.display_name, tag.permalink_url, :rel => "tag"}.sort.join(", ")
-
end
-
-
1
def next_link(article, prefix="")
-
n = article.next
-
prefix = (prefix.blank?) ? "#{n.title} »" : prefix
-
return n ? link_to_permalink(n, prefix) : ''
-
end
-
-
1
def prev_link(article, prefix="")
-
p = article.previous
-
prefix = (prefix.blank?) ? "« #{p.title}" : prefix
-
return p ? link_to_permalink(p, prefix) : ''
-
end
-
-
1
def render_to_string(*args, &block)
-
controller.send(:render_to_string, *args, &block)
-
end
-
end
-
1
module GroupingsHelper
-
1
def ul_tag_for(grouping_class)
-
case
-
when grouping_class == Tag
-
4
%{<ul id="taglist" class="tags">}
-
when grouping_class == Category
-
1
%{<ul class="categorylist">}
-
else
-
1
'<ul>'
-
6
end
-
end
-
end
-
1
module MailHelper
-
# Mutter... ActionMailer doesn't do fragment caching.
-
1
def html(content, what=:all)
-
60
content.html(what)
-
end
-
-
# Helper method to get the blog object.
-
1
def this_blog
-
2301
@blog ||= Blog.default
-
end
-
-
1
def new_js_distance_of_time_in_words_to_now(date)
-
time = _(date.utc.strftime(_("%%a, %%d %%b %%Y %%H:%%M:%%S GMT", date.utc)))
-
timestamp = date.utc.to_i ;
-
"<span class=\"typo_date date gmttimestamp-#{timestamp}\" title=\"#{time}\" >#{time}</span>"
-
end
-
-
1
def display_date(date)
-
238
date.strftime(this_blog.date_format)
-
end
-
-
1
def display_time(time)
-
238
time.strftime(this_blog.time_format)
-
end
-
-
1
def display_date_and_time(timestamp)
-
238
return new_js_distance_of_time_in_words_to_now(timestamp) if this_blog.date_format == 'distance_of_time_in_words'
-
238
"#{display_date(timestamp)} #{_('at')} #{display_time(timestamp)}"
-
end
-
-
end
-
-
1
module SidebarHelper
-
1
def render_sidebars(*sidebars)
-
79
begin
-
79
(sidebars.blank? ? Sidebar.find(:all, :order => 'active_position ASC') : sidebars).map do |sb|
-
2
@sidebar = sb
-
2
sb.parse_request(content_array, params)
-
1
render_sidebar(sb)
-
end.join
-
1
rescue => e
-
1
logger.error e
-
_("It seems something went wrong. Maybe some of your sidebars are actually missing and you should either reinstall them or remove them manually
-
1
")
-
end
-
end
-
-
1
def render_sidebar(sidebar)
-
1
if sidebar.view_root
-
render_deprecated_sidebar_view_in_view_root sidebar
-
else
-
render_to_string(:partial => sidebar.content_partial,
-
:locals => sidebar.to_locals_hash,
-
1
:layout => false)
-
end
-
end
-
-
1
def render_deprecated_sidebar_view_in_view_root(sidebar)
-
logger.warn "Sidebar#view_root is deprecated. Place your _content.html.erb in views/sidebar_name/ in your plugin's folder"
-
# Allow themes to override sidebar views
-
view_root = File.expand_path(sidebar.view_root)
-
rails_root = File.expand_path(::Rails.root.to_s)
-
if view_root =~ /^#{Regexp.escape(rails_root)}/
-
new_root = view_root[rails_root.size..-1]
-
new_root.sub! %r{^/?vendor/}, ""
-
new_root.sub! %r{/views}, ""
-
new_root = File.join(this_blog.current_theme.path, "views", new_root)
-
view_root = new_root if File.exists?(File.join(new_root, "content.rhtml"))
-
end
-
render_to_string(:file => "#{view_root}/content.rhtml",
-
:locals => sidebar.to_locals_hash,
-
:layout => false)
-
end
-
-
1
def articles?
-
not Article.first.nil?
-
end
-
-
1
def trackbacks?
-
not Trackback.first.nil?
-
end
-
-
1
def comments?
-
not Comment.first.nil?
-
end
-
-
end
-
1
module Sidebars::PluginHelper
-
end
-
1
module ThemeHelper
-
# coding: utf-8
-
1
def render_active_page(page)
-
if controller.action_name == 'view_page'
-
return 'active' if params[:name].to_s == page
-
end
-
end
-
-
1
def render_active_home
-
10
if controller.controller_name == 'articles' and controller.action_name != 'view_page'
-
if controller.action_name = 'index'
-
return if params[:page]
-
return 'active'
-
end
-
end
-
end
-
-
1
def render_active_articles
-
10
return if controller.action_name == 'view_page'
-
10
if controller.controller_name == 'articles' and controller.action_name == 'index'
-
return unless params[:page]
-
end
-
10
return 'active'
-
end
-
-
1
def category_name(id)
-
7
category = Category.find_by_permalink(id)
-
7
category.name
-
end
-
-
1
def display_comments_counter(article)
-
link_to pluralize(article.published_comments.size,
-
_('%d comments', article.published_comments.size),
-
_('%d comment', article.published_comments.size),
-
86
_('%d comments', article.published_comments.size)), article.permalink_url
-
end
-
-
1
def show_pages_links
-
10
html = ''.html_safe
-
10
pages = Page.find(:all, :conditions => {:published => true})
-
10
pages.each do |page|
-
html << content_tag(:li, link_to_permalink(page, page.title, nil, render_active_page(page.name)))
-
end
-
10
html
-
end
-
end
-
1
module XmlHelper
-
1
def pub_date(time)
-
41
time.rfc822
-
end
-
-
1
def collection_lastmod(collection)
-
article_updated = collection.articles.find(:first, :order => 'updated_at DESC')
-
article_published = collection.articles.find(:first, :order => 'published_at DESC')
-
-
times = []
-
times.push article_updated.updated_at if article_updated
-
times.push article_published.updated_at if article_published
-
-
if times.empty?
-
Time.at(0).xmlschema
-
else
-
times.max.xmlschema
-
end
-
end
-
end
-
# coding: utf-8
-
1
require 'uri'
-
1
require 'net/http'
-
-
1
class Article < Content
-
1
include TypoGuid
-
1
include ConfigManager
-
-
1
serialize :settings, Hash
-
-
1
content_fields :body, :extended
-
-
1
validates_uniqueness_of :guid
-
1
validates_presence_of :title
-
-
1
belongs_to :user
-
-
1
has_many :pings, :dependent => :destroy, :order => "created_at ASC"
-
1
has_many :trackbacks, :dependent => :destroy, :order => "created_at ASC"
-
1
has_many :feedback, :order => "created_at DESC"
-
1
has_many :resources, :order => "created_at DESC", :dependent => :nullify
-
1
has_many :categorizations
-
1
has_many :categories, :through => :categorizations
-
1
has_many :triggers, :as => :pending_item
-
-
1
has_many :comments, :dependent => :destroy, :order => "created_at ASC" do
-
-
# Get only ham or presumed_ham comments
-
1
def ham
-
20
find :all, :conditions => {:state => ["presumed_ham", "ham"]}
-
end
-
-
# Get only spam or presumed_spam comments
-
1
def spam
-
1
find :all, :conditions => {:state => ["presumed_spam", "spam"]}
-
end
-
-
end
-
-
1
with_options(:conditions => { :published => true }, :order => 'created_at DESC') do |this|
-
1
this.has_many :published_comments, :class_name => "Comment", :order => "created_at ASC"
-
1
this.has_many :published_trackbacks, :class_name => "Trackback", :order => "created_at ASC"
-
1
this.has_many :published_feedback, :class_name => "Feedback", :order => "created_at ASC"
-
end
-
-
1
has_and_belongs_to_many :tags
-
-
1
before_create :set_defaults, :create_guid
-
1
after_create :add_notifications
-
1
before_save :set_published_at, :ensure_settings_type, :set_permalink
-
1
after_save :post_trigger, :keywords_to_tags, :shorten_url
-
-
1
scope :category, lambda {|category_id| {:conditions => ['categorizations.category_id = ?', category_id], :include => 'categorizations'}}
-
14
scope :drafts, lambda { { :conditions => { :state => 'draft' }, :order => 'created_at DESC' } }
-
1
scope :without_parent, {:conditions => {:parent_id => nil}}
-
15
scope :child_of, lambda { |article_id| {:conditions => {:parent_id => article_id}} }
-
64
scope :published, lambda { { :conditions => { :published => true, :published_at => Time.at(0)..Time.now }, :order => 'published_at DESC' } }
-
3
scope :pending, lambda { { :conditions => ['state = ? and published_at > ?', 'publication_pending', Time.now], :order => 'published_at DESC' } }
-
5
scope :withdrawn, lambda { { :conditions => { :state => 'withdrawn' }, :order => 'published_at DESC' } }
-
8
scope :published_at, lambda {|time_params| { :conditions => { :published => true, :published_at => Article.time_delta(*time_params) }, :order => 'published_at DESC' } }
-
-
1
setting :password, :string, ''
-
-
1
def initialize(*args)
-
1040
super
-
# Yes, this is weird - PDC
-
1040
begin
-
1040
self.settings ||= {}
-
rescue Exception => e
-
self.settings = {}
-
end
-
end
-
-
1
def set_permalink
-
891
return if self.state == 'draft'
-
891
self.permalink = self.title.to_permalink if self.permalink.nil? or self.permalink.empty?
-
end
-
-
1
def has_child?
-
15
Article.exists?({:parent_id => self.id})
-
end
-
-
1
attr_accessor :draft, :keywords
-
-
1
has_state(:state,
-
:valid_states => [:new, :draft,
-
:publication_pending, :just_published, :published,
-
:just_withdrawn, :withdrawn],
-
:initial_state => :new,
-
:handles => [:withdraw,
-
:post_trigger,
-
:send_pings, :send_notifications,
-
:published_at=, :just_published?])
-
-
1
include Article::States
-
-
1
class << self
-
1
def last_draft(article_id)
-
12
article = Article.find(article_id)
-
12
while article.has_child?
-
1
article = Article.child_of(article.id).first
-
end
-
12
article
-
end
-
-
1
def search_with_pagination(search_hash, paginate_hash)
-
-
20
state = (search_hash[:state] and ["no_draft", "drafts", "published", "withdrawn", "pending"].include? search_hash[:state]) ? search_hash[:state] : 'no_draft'
-
-
-
20
list_function = ["Article.#{state}"] + function_search_no_draft(search_hash)
-
-
20
if search_hash[:category] and search_hash[:category].to_i > 0
-
list_function << 'category(search_hash[:category])'
-
end
-
-
20
list_function << "page(paginate_hash[:page])"
-
20
list_function << "per(paginate_hash[:per_page])"
-
-
20
eval(list_function.join('.'))
-
end
-
-
end
-
-
1
def year_url
-
1292
published_at.year.to_s
-
end
-
-
1
def month_url
-
1292
sprintf("%.2d", published_at.month)
-
end
-
-
1
def day_url
-
1290
sprintf("%.2d", published_at.day)
-
end
-
-
1
def title_url
-
1290
URI.encode(permalink.to_s)
-
end
-
-
1
def permalink_url_options(nesting = false)
-
1290
format_url = blog.permalink_format.dup
-
1290
format_url.gsub!('%year%', year_url)
-
1290
format_url.gsub!('%month%', month_url)
-
1290
format_url.gsub!('%day%', day_url)
-
1290
format_url.gsub!('%title%', title_url)
-
1290
if format_url[0,1] == '/'
-
1290
format_url[1..-1]
-
else
-
format_url
-
end
-
end
-
-
1
def permalink_url(anchor=nil, only_path=false)
-
1737
@cached_permalink_url ||= {}
-
-
1737
@cached_permalink_url["#{anchor}#{only_path}"] ||= \
-
blog.url_for(permalink_url_options, :anchor => anchor, :only_path => only_path)
-
end
-
-
1
def param_array
-
@param_array ||=
-
[published_at.year,
-
sprintf('%.2d', published_at.month),
-
sprintf('%.2d', published_at.day),
-
permalink].tap \
-
do |params|
-
this = self
-
k = class << params; self; end
-
k.send(:define_method, :to_s) { params[-1] }
-
end
-
end
-
-
1
def to_param
-
param_array
-
end
-
-
1
def trackback_url
-
52
blog.url_for("trackbacks?article_id=#{self.id}", :only_path => false)
-
end
-
-
1
def permalink_by_format(format=nil)
-
8
if format.nil?
-
permalink_url
-
8
elsif format.to_sym == :rss
-
6
feed_url(:rss)
-
2
elsif format.to_sym == :atom
-
2
feed_url(:atom)
-
else
-
raise UnSupportedFormat
-
end
-
end
-
-
1
def comment_url
-
16
blog.url_for("comments?article_id=#{self.id}", :only_path => false)
-
end
-
-
1
def preview_comment_url
-
16
blog.url_for("comments/preview?article_id=#{self.id}", :only_path => false)
-
end
-
-
1
def feed_url(format = :rss20)
-
40
format_extension = format.to_s.gsub(/\d/,'')
-
40
permalink_url + ".#{format_extension}"
-
end
-
-
1
def edit_url
-
1
blog.url_for(:controller => "/admin/content", :action =>"edit", :id => id)
-
end
-
-
1
def delete_url
-
1
blog.url_for(:controller => "/admin/content", :action =>"destroy", :id => id)
-
end
-
-
1
def html_urls
-
7
urls = Array.new
-
7
html.gsub(/<a\s+[^>]*>/) do |tag|
-
8
if(tag =~ /\bhref=(["']?)([^ >"]+)\1/)
-
7
urls.push($2.strip)
-
end
-
end
-
-
7
urls.uniq
-
end
-
-
1
def really_send_pings(serverurl = blog.base_url, articleurl = nil)
-
770
return unless blog.send_outbound_pings
-
-
1
articleurl ||= permalink_url(nil)
-
-
1
weblogupdatesping_urls = blog.ping_urls.gsub(/ +/,'').split(/[\n\r]+/).map(&:strip)
-
1
pingback_or_trackback_urls = self.html_urls
-
-
1
ping_urls = weblogupdatesping_urls + pingback_or_trackback_urls
-
-
1
existing_ping_urls = pings.collect { |p| p.url }
-
-
1
ping_urls.uniq.each do |url|
-
2
begin
-
2
unless existing_ping_urls.include?(url)
-
2
ping = pings.build("url" => url)
-
-
2
if weblogupdatesping_urls.include?(url)
-
1
ping.send_weblogupdatesping(serverurl, articleurl)
-
elsif pingback_or_trackback_urls.include?(url)
-
1
ping.send_pingback_or_trackback(articleurl)
-
end
-
end
-
rescue Exception => e
-
logger.error(e)
-
# in case the remote server doesn't respond or gives an error,
-
# we should throw an xmlrpc error here.
-
end
-
end
-
end
-
-
1
def next
-
self.class.find(:first, :conditions => ['published_at > ?', published_at],
-
:order => 'published_at asc')
-
end
-
-
1
def previous
-
self.class.find(:first, :conditions => ['published_at < ?', published_at],
-
:order => 'published_at desc')
-
end
-
-
# Count articles on a certain date
-
1
def self.count_by_date(year, month = nil, day = nil, limit = nil)
-
if !year.blank?
-
count(:conditions => { :published_at => time_delta(year, month, day),
-
:published => true })
-
else
-
count(:conditions => { :published => true })
-
end
-
end
-
-
1
def self.find_by_published_at
-
20
super(:published_at)
-
end
-
-
1
def self.get_or_build_article id = nil
-
72
return Article.find(id) if id
-
42
article = Article.new.tap do |art|
-
42
art.allow_comments = art.blog.default_allow_comments
-
42
art.allow_pings = art.blog.default_allow_pings
-
42
art.text_filter = art.blog.text_filter
-
42
art.old_permalink = art.permalink_url unless art.permalink.nil? or art.permalink.empty?
-
42
art.published = true
-
end
-
end
-
-
# Finds one article which was posted on a certain date and matches the supplied dashed-title
-
# params is a Hash
-
1
def self.find_by_permalink(params)
-
29
date_range = self.time_delta(params[:year], params[:month], params[:day])
-
-
26
req_params = {}
-
26
req_params[:permalink] = params[:title] if params[:title]
-
26
req_params[:published_at] = date_range if date_range
-
-
26
return nil if req_params.empty? # no search if no params send
-
-
26
article = find_published(:first, :conditions => req_params)
-
26
return article if article
-
-
4
if params[:title]
-
4
req_params[:permalink] = CGI.escape(params[:title])
-
4
article = find_published(:first, :conditions => req_params)
-
4
return article if article
-
end
-
-
3
raise ActiveRecord::RecordNotFound
-
end
-
-
1
def self.find_by_params_hash(params = {})
-
25
params[:title] ||= params[:article_id]
-
25
find_by_permalink(params)
-
end
-
-
# Fulltext searches the body of published articles
-
1
def self.search(query, args={})
-
34
query_s = query.to_s.strip
-
34
if !query_s.empty? && args.empty?
-
7
Article.searchstring(query)
-
27
elsif !query_s.empty? && !args.empty?
-
27
Article.searchstring(query).page(args[:page]).per(args[:per])
-
else
-
[]
-
end
-
end
-
-
1
def keywords_to_tags
-
891
Article.transaction do
-
891
tags.clear
-
tags <<
-
keywords.to_s.scan(/((['"]).*?\2|[\.\w]+)/).collect do |x|
-
21
x.first.tr("\"'", '')
-
end.uniq.map do |tagword|
-
21
Tag.get(tagword)
-
891
end
-
end
-
end
-
-
1
def interested_users
-
1622
User.find_all_by_notify_on_new_articles(true)
-
end
-
-
1
def notify_user_via_email(user)
-
4
if user.notify_via_email?
-
2
EmailNotify.send_article(self, user)
-
end
-
end
-
-
1
def comments_closed?
-
192
!(allow_comments? && in_feedback_window?)
-
end
-
-
1
def pings_closed?
-
4
!(allow_pings? && in_feedback_window?)
-
end
-
-
# check if time to comment is open or not
-
1
def in_feedback_window?
-
self.blog.sp_article_auto_close.zero? ||
-
137
self.published_at.to_i > self.blog.sp_article_auto_close.days.ago.to_i
-
end
-
-
1
def cast_to_boolean(value)
-
860
ActiveRecord::ConnectionAdapters::Column.value_to_boolean(value)
-
end
-
# Cast the input value for published= before passing it to the state.
-
1
def published=(newval)
-
860
state.published = cast_to_boolean(newval)
-
end
-
-
1
def content_fields
-
359
[:body, :extended]
-
end
-
-
# The web interface no longer distinguishes between separate "body" and
-
# "extended" fields, and instead edits everything in a single edit field,
-
# separating the extended content using "\<!--more-->".
-
1
def body_and_extended
-
10
if extended.nil? || extended.empty?
-
5
body
-
else
-
5
body + "\n<!--more-->\n" + extended
-
end
-
end
-
-
# Split apart value around a "\<!--more-->" comment and assign it to our
-
# #body and #extended fields.
-
1
def body_and_extended= value
-
11
parts = value.split(/\n?<!--more-->\n?/, 2)
-
11
self.body = parts[0]
-
11
self.extended = parts[1] || ''
-
end
-
-
1
def link_to_author?
-
29
!user.email.blank? && blog.link_to_author
-
end
-
-
1
def password_protected?
-
56
not password.blank?
-
end
-
-
1
def add_comment(params)
-
9
comments.build(params)
-
end
-
-
1
def add_category(category, is_primary = false)
-
3
self.categorizations.build(:category => category, :is_primary => is_primary)
-
end
-
-
1
def access_by?(user)
-
22
user.admin? || user_id == user.id
-
end
-
-
1
protected
-
-
1
def set_published_at
-
891
if self.published and self[:published_at].nil?
-
self[:published_at] = self.created_at || Time.now
-
end
-
end
-
-
1
def ensure_settings_type
-
891
if settings.is_a?(String)
-
# Any dump access forcing de-serialization
-
password.blank?
-
end
-
end
-
-
1
def set_defaults
-
if self.attributes.include?("permalink") and
-
(self.permalink.blank? or
-
self.permalink.to_s =~ /article-draft/ or
-
self.state == "draft"
-
852
)
-
set_permalink
-
end
-
852
if blog && self.allow_comments.nil?
-
21
self.allow_comments = blog.default_allow_comments
-
end
-
-
852
if blog && self.allow_pings.nil?
-
21
self.allow_pings = blog.default_allow_pings
-
end
-
-
852
true
-
end
-
-
1
def add_notifications
-
852
users = interested_users
-
852
users << self.user if (self.user.notify_watch_my_articles? rescue false)
-
852
self.notify_users = users.uniq
-
end
-
-
1
def self.time_delta(year = nil, month = nil, day = nil)
-
36
return nil if year.nil? && month.nil? && day.nil?
-
22
from = Time.utc(year, month || 1, day || 1)
-
-
19
to = from.next_year
-
19
to = from.next_month unless month.blank?
-
19
to = from + 1.day unless day.blank?
-
19
to = to - 1 # pull off 1 second so we don't overlap onto the next day
-
19
return from..to
-
end
-
end
-
# The Blog class represents the one and only blog. It stores most
-
# configuration settings and is linked to most of the assorted content
-
# classes via has_many.
-
#
-
# Once upon a time, there were plans to make typo handle multiple blogs,
-
# but it never happened and typo is now firmly single-blog.
-
#
-
1
class Blog < ActiveRecord::Base
-
1
include ConfigManager
-
1
extend ActiveSupport::Memoizable
-
1
include Rails.application.routes.url_helpers
-
-
1
attr_accessor :custom_permalink
-
-
1
validate(:on => :create) { |blog|
-
831
unless Blog.count.zero?
-
1
blog.errors.add(:base, "There can only be one...")
-
end
-
}
-
-
1
validates :blog_name, :presence => true
-
-
1
serialize :settings, Hash
-
-
# Description
-
1
setting :blog_name, :string, 'My Shiny Weblog!'
-
1
setting :blog_subtitle, :string, ''
-
1
setting :geourl_location, :string, ''
-
1
setting :canonical_server_url, :string, '' # Deprecated
-
1
setting :lang, :string, 'en_US'
-
1
setting :title_prefix, :integer, 0 # Deprecated but needed for a migration
-
-
# Spam
-
1
setting :sp_global, :boolean, false
-
1
setting :sp_article_auto_close, :integer, 0
-
1
setting :sp_url_limit, :integer, 0
-
1
setting :sp_akismet_key, :string, ''
-
1
setting :use_recaptcha, :boolean, false
-
-
# Mostly Behaviour
-
1
setting :text_filter, :string, 'markdown smartypants'
-
1
setting :comment_text_filter, :string, 'markdown smartypants'
-
1
setting :limit_article_display, :integer, 10
-
1
setting :limit_rss_display, :integer, 10
-
1
setting :default_allow_pings, :boolean, false
-
1
setting :default_allow_comments, :boolean, true
-
1
setting :default_moderate_comments, :boolean, false
-
1
setting :link_to_author, :boolean, false
-
1
setting :show_extended_on_rss, :boolean, true # deprecated but still needed for backward compatibility
-
1
setting :hide_extended_on_rss, :boolean, false
-
1
setting :theme, :string, 'bootstrap'
-
1
setting :plugin_avatar, :string, ''
-
1
setting :global_pings_disable, :boolean, false
-
1
setting :ping_urls, :string, "http://blogsearch.google.com/ping/RPC2\nhttp://rpc.technorati.com/rpc/ping\nhttp://ping.blo.gs/\nhttp://rpc.weblogs.com/RPC2"
-
1
setting :send_outbound_pings, :boolean, true
-
1
setting :email_from, :string, 'typo@example.com'
-
1
setting :editor, :integer, 'visual'
-
1
setting :allow_signup, :integer, 0
-
1
setting :date_format, :string, '%d/%m/%Y'
-
1
setting :time_format, :string, '%Hh%M'
-
1
setting :image_thumb_size, :integer, 125
-
1
setting :image_medium_size, :integer, 600
-
-
# SEO
-
1
setting :meta_description, :string, ''
-
1
setting :meta_keywords, :string, ''
-
1
setting :google_analytics, :string, ''
-
1
setting :feedburner_url, :string, ''
-
1
setting :rss_description, :boolean, false
-
1
setting :rss_description_text, :string, "<hr /><p><small>Original article writen by %author% and published on <a href='%blog_url%'>%blog_name%</a> | <a href='%permalink_url%'>direct link to this article</a> | If you are reading this article elsewhere than <a href='%blog_url%'>%blog_name%</a>, it has been illegally reproduced and without proper authorization.</small></p>"
-
1
setting :permalink_format, :string, '/%year%/%month%/%day%/%title%'
-
1
setting :robots, :string, ''
-
1
setting :index_categories, :boolean, true # deprecated but still needed for backward compatibility
-
1
setting :unindex_categories, :boolean, false
-
1
setting :index_tags, :boolean, true # deprecated but still needed for backward compatibility
-
1
setting :unindex_tags, :boolean, false
-
1
setting :admin_display_elements, :integer, 10
-
1
setting :google_verification, :string, ''
-
1
setting :nofollowify, :boolean, true # deprecated but still needed for backward compatibility
-
1
setting :dofollowify, :boolean, false
-
1
setting :use_canonical_url, :boolean, false
-
1
setting :use_meta_keyword, :boolean, true
-
1
setting :home_title_template, :string, "%blog_name% | %blog_subtitle%" # spec OK
-
1
setting :home_desc_template, :string, "%blog_name% | %blog_subtitle% | %meta_keywords%" # OK
-
1
setting :article_title_template, :string, "%title% | %blog_name%" # spec OK
-
1
setting :article_desc_template, :string, "%excerpt%" #OK
-
1
setting :page_title_template, :string, "%title% | %blog_name%" # OK
-
1
setting :page_desc_template, :string, "%excerpt%" # OK
-
1
setting :paginated_title_template, :string, "%blog_name% | %blog_subtitle% %page%" # spec OK
-
1
setting :paginated_desc_template, :string, "%blog_name% | %blog_subtitle% | %meta_keywords% %page%" # OK
-
1
setting :category_title_template, :string, "Category: %name% | %blog_name% %page%" # Spec
-
1
setting :category_desc_template, :string, "%name% | %description% | %blog_subtitle% %page%" # Spec
-
1
setting :tag_title_template, :string, "Tag: %name% | %blog_name% %page%"
-
1
setting :tag_desc_template, :string, "%name% | %blog_name% | %blog_subtitle% %page%"
-
1
setting :author_title_template, :string, "%author% | %blog_name%" # OK
-
1
setting :author_desc_template, :string, "%author% | %blog_name% | %blog_subtitle%" # OK
-
1
setting :archives_title_template, :string, "Archives for %blog_name% %date% %page%" # specs OK
-
1
setting :archives_desc_template, :string, "Archives for %blog_name% %date% %page% %blog_subtitle%" # OK
-
1
setting :search_title_template, :string, "Results for %search% | %blog_name% %page%" # OK
-
1
setting :search_desc_template, :string, "Results for %search% | %blog_name% | %blog_subtitle% %page%" # OK
-
1
setting :custom_tracking_field, :string, ''
-
# setting :meta_author_template, :string, "%blog_name% | %nickname%"
-
-
# Error handling
-
1
setting :title_error_404, :string, "Page not found"
-
1
setting :msg_error_404, :string, "<p>The page you are looking for has moved or does not exist.</p>"
-
-
1
validate :permalink_has_identifier
-
-
1
def initialize(*args)
-
1106
super
-
# Yes, this is weird - PDC
-
1106
begin
-
1106
self.settings ||= {}
-
rescue Exception => e
-
self.settings = {}
-
end
-
end
-
-
# The default Blog. This is the lowest-numbered blog, almost always
-
# id==1. This should be the only blog as well.
-
1
def self.default
-
4479
find(:first, :order => 'id')
-
rescue
-
logger.warn 'You have no blog installed.'
-
nil
-
end
-
-
# In settings with :article_id
-
1
def ping_article!(settings)
-
unless global_pings_enabled? && settings.has_key?(:url) && settings.has_key?(:article_id)
-
throw :error, "Invalid trackback or trackbacks not enabled"
-
end
-
settings[:blog_id] = self.id
-
article = Article.find(settings[:article_id])
-
unless article.allow_pings?
-
throw :error, "Trackback not saved"
-
end
-
article.trackbacks.create!(settings)
-
end
-
-
1
def global_pings_enabled?
-
! global_pings_disable?
-
end
-
-
# Check that all required blog settings have a value.
-
1
def configured?
-
136
settings.has_key?('blog_name')
-
end
-
-
# The +Theme+ object for the current theme.
-
1
def current_theme
-
102
Theme.find(theme)
-
end
-
1
memoize :current_theme
-
-
# Generate a URL based on the +base_url+. This allows us to generate URLs
-
# without needing a controller handy, so we can produce URLs from within models
-
# where appropriate.
-
#
-
# It also caches the result in the RouteCache, so repeated URL generation
-
# requests should be fast, as they bypass all of Rails' route logic.
-
1
def url_for_with_base_url(options = {}, extra_params = {})
-
1598
case options
-
when String
-
1463
if extra_params[:only_path]
-
6
url_generated = root_path
-
else
-
1457
url_generated = base_url
-
end
-
1463
url_generated += "/#{options}" # They asked for 'url_for "/some/path"', so return it unedited.
-
1463
url_generated += "##{extra_params[:anchor]}" if extra_params[:anchor]
-
1463
url_generated
-
when Hash
-
135
unless RouteCache[options]
-
135
options.reverse_merge!(:only_path => false, :controller => '',
-
:action => 'permalink',
-
:host => host_with_port,
-
:script_name => root_path)
-
-
135
RouteCache[options] = url_for_without_base_url(options)
-
end
-
-
135
return RouteCache[options]
-
else
-
raise "Invalid URL in url_for: #{options.inspect}"
-
end
-
end
-
-
1
alias_method_chain :url_for, :base_url
-
-
# The URL for a static file.
-
1
def file_url(filename)
-
53
url_for "files/#{filename}", :only_path => false
-
end
-
-
1
def requested_article(params)
-
25
Article.find_by_params_hash(params)
-
end
-
-
1
def articles_matching(query, args={})
-
27
Article.search(query, args)
-
end
-
-
1
def rss_limit_params
-
12
limit = limit_rss_display.to_i
-
12
return limit.zero? \
-
? {} \
-
12
: {:limit => limit}
-
end
-
-
1
def permalink_has_identifier
-
905
unless permalink_format =~ /(%title%)/
-
14
errors.add(:permalink_format, _("You need a permalink format with an identifier : %%title%%"))
-
end
-
-
# A permalink cannot end in .atom or .rss. it's reserved for the feeds
-
905
if permalink_format =~ /\.(atom|rss)$/
-
2
errors.add(:permalink_format, _("Can't end in .rss or .atom. These are reserved to be used for feed URLs"))
-
end
-
end
-
-
1
def root_path
-
144
split_base_url[:root_path]
-
end
-
-
1
def text_filter_object
-
211
text_filter.to_text_filter
-
end
-
-
1
private
-
-
1
def protocol
-
split_base_url[:protocol]
-
end
-
-
1
def host_with_port
-
135
split_base_url[:host_with_port]
-
end
-
-
1
def split_base_url
-
279
unless @split_base_url
-
106
unless base_url =~ /(https?):\/\/([^\/]*)(.*)/
-
raise "Invalid base_url: #{self.base_url}"
-
end
-
106
@split_base_url = { :protocol => $1, :host_with_port => $2,
-
:root_path => $3.gsub(%r{/$},'') }
-
end
-
279
@split_base_url
-
end
-
-
end
-
-
1
class BlogSweeper < ActionController::Caching::Sweeper
-
1
observe Category, Blog, User, Article, Page, Categorization, Comment, Trackback
-
-
1
def pending_sweeps
-
5412
@pending_sweeps ||= Set.new
-
end
-
-
1
def run_pending_page_sweeps
-
2671
pending_sweeps.each do |each|
-
10674
self.send(each)
-
end
-
end
-
-
1
def after_comments_create
-
expire_for(controller.send(:instance_variable_get, :@comment))
-
end
-
-
1
alias_method :after_comments_update, :after_comments_create
-
1
alias_method :after_articles_comment, :after_comments_create
-
-
1
def after_comments_destroy
-
expire_for(controller.send(:instance_variable_get, :@comment), true)
-
end
-
-
1
alias_method :after_articles_nuke_comment, :after_comments_destroy
-
-
1
def after_articles_trackback
-
expire_for(controller.send(:instance_variable_get, :@trackback))
-
end
-
-
1
def after_articles_nuke_trackback
-
expire_for(controller.send(:instance_variable_get, :@trackback), true)
-
end
-
-
1
def after_save(record)
-
2797
expire_for(record) unless (record.is_a?(Article) and record.state == :draft)
-
end
-
-
1
def after_destroy(record)
-
30
expire_for(record, true)
-
end
-
-
# TODO: Simplify this. Almost every sweep amounts to a sweep_all.
-
1
def expire_for(record, destroying = false)
-
2827
case record
-
when Page
-
17
pending_sweeps << :sweep_pages
-
when Content
-
1027
if record.invalidates_cache?(destroying)
-
941
pending_sweeps << :sweep_articles << :sweep_pages
-
end
-
when Category, Categorization
-
150
pending_sweeps << :sweep_articles << :sweep_pages
-
when Blog, User, Comment, Trackback
-
1633
pending_sweeps << :sweep_all << :sweep_theme
-
end
-
2827
unless controller
-
2671
run_pending_page_sweeps
-
end
-
end
-
-
1
def sweep_all
-
2671
PageCache.sweep_all
-
end
-
-
1
def sweep_theme
-
2671
PageCache.sweep_theme_cache
-
end
-
-
1
def sweep_articles
-
2666
PageCache.sweep_all
-
end
-
-
1
def sweep_pages
-
2666
PageCache.zap_pages(%w{pages}) unless Blog.default.nil?
-
end
-
-
1
def logger
-
@logger ||= ::Rails.logger || Logger.new(STDERR)
-
end
-
-
1
private
-
1
def callback(timing)
-
super
-
if timing == :after
-
run_pending_page_sweeps
-
end
-
end
-
end
-
1
class Categorization < ActiveRecord::Base
-
1
belongs_to :article
-
1
belongs_to :category
-
end
-
1
class Category < ActiveRecord::Base
-
1
acts_as_list
-
1
acts_as_tree :order=>"name"
-
1
has_many :categorizations
-
-
1
has_many :articles,
-
:through => :categorizations,
-
:order => "published_at DESC, created_at DESC"
-
-
-
1
default_scope :order => 'name ASC'
-
-
1
module Finders
-
1
def find_all_with_article_counters(maxcount=nil)
-
4
self.find_by_sql([%{
-
SELECT categories.id, categories.name, categories.permalink, categories.position, COUNT(articles.id) AS article_counter
-
FROM #{Category.table_name} categories
-
LEFT OUTER JOIN #{Category.table_name_prefix}categorizations#{Category.table_name_suffix} articles_categories
-
ON articles_categories.category_id = categories.id
-
LEFT OUTER JOIN #{Article.table_name} articles
-
ON (articles_categories.article_id = articles.id AND articles.published = ?)
-
GROUP BY categories.id, categories.name, categories.position, categories.permalink
-
ORDER BY position
-
2
}, true]).each {|item| item.article_counter = item.article_counter.to_i }
-
end
-
-
1
def find_by_permalink(permalink, options = {})
-
24
with_scope(:find => options) do
-
find(:first, :conditions => {:permalink => permalink}) or
-
24
raise ActiveRecord::RecordNotFound
-
end
-
end
-
end
-
1
extend Finders
-
-
-
1
def self.to_prefix
-
'category'
-
end
-
-
1
def self.reorder(serialized_list)
-
self.transaction do
-
serialized_list.each_with_index do |cid,index|
-
find(cid).update_attribute "position", index
-
end
-
end
-
end
-
-
1
def self.reorder_alpha
-
reorder send(:with_exclusive_scope){find(:all, :order => 'UPPER(name)').collect { |c| c.id }}
-
end
-
-
1
def published_articles
-
3
articles.already_published
-
end
-
-
1
def display_name
-
6
name
-
end
-
-
1
def permalink_url(anchor=nil, only_path=false)
-
46
blog = Blog.default # remove me...
-
-
46
blog.url_for(
-
:controller => '/categories',
-
:action => 'show',
-
:id => permalink,
-
:only_path => only_path
-
)
-
end
-
-
1
def to_param
-
8
permalink
-
end
-
-
1
protected
-
-
1
before_save :set_permalink
-
-
1
def set_permalink
-
71
self.permalink = self.name.to_permalink if self.permalink.nil? or self.permalink.empty?
-
end
-
-
1
validates_presence_of :name
-
1
validates_uniqueness_of :name, :on => :create
-
end
-
-
1
require_dependency 'spam_protection'
-
1
require 'timeout'
-
-
1
class Comment < Feedback
-
1
belongs_to :article
-
1
belongs_to :user
-
1
content_fields :body
-
1
validates_presence_of :author, :body
-
-
1
attr_accessor :user_agent
-
1
attr_accessor :referrer
-
1
attr_accessor :permalink
-
-
1
def notify_user_via_email(user)
-
if user.notify_via_email?
-
EmailNotify.send_comment(self, user)
-
end
-
end
-
-
1
def interested_users
-
26
users = User.find_all_by_notify_on_comments(true)
-
# XXX: What's this doing here?
-
26
self.notify_users = users
-
26
users
-
end
-
-
1
def default_text_filter
-
176
blog.comment_text_filter.to_text_filter
-
end
-
-
1
def feed_title
-
12
"Comment on #{article.title} by #{author}"
-
end
-
-
1
protected
-
-
1
def article_allows_feedback?
-
79
return true if article.allow_comments?
-
errors.add(:article, "Article is not open to comments")
-
false
-
end
-
-
1
def originator
-
author
-
end
-
-
1
def content_fields
-
197
[:body]
-
end
-
end
-
1
module ConfigManager
-
1
def self.append_features(base)
-
4
super
-
4
base.extend(ClassMethods)
-
end
-
-
1
module ClassMethods
-
1
def fields
-
17441
@fields ||= Hash.new { Item.new }
-
end
-
-
1
def setting(name, type=:object, default=nil)
-
93
item = Item.new
-
93
item.name, item.ruby_type, item.default = name.to_s, type, default
-
93
fields[name.to_s] = item
-
93
add_setting_accessor(item)
-
end
-
-
1
def default_for(key)
-
fields[key.to_s].default
-
end
-
-
1
private
-
-
1
def add_setting_accessor(item)
-
93
add_setting_reader(item)
-
93
add_setting_writer(item)
-
end
-
-
1
def add_setting_reader(item)
-
93
self.send(:define_method, item.name) do
-
13481
raw_value = settings[item.name]
-
13481
raw_value.nil? ? item.default : raw_value
-
end
-
93
if item.ruby_type == :boolean
-
26
self.send(:define_method, item.name + "?") do
-
856
raw_value = settings[item.name]
-
856
raw_value.nil? ? item.default : raw_value
-
end
-
end
-
end
-
-
1
def add_setting_writer(item)
-
93
self.send(:define_method, "#{item.name}=") do |newvalue|
-
17348
self.settings ||= {}
-
17348
retval = settings[item.name] = canonicalize(item.name, newvalue)
-
17348
retval
-
end
-
end
-
-
end
-
-
1
def canonicalize(key, value)
-
17348
self.class.fields[key.to_s].canonicalize(value)
-
end
-
-
1
class Item
-
1
attr_accessor :name, :ruby_type, :default
-
-
1
def canonicalize(value)
-
17348
case ruby_type
-
when :boolean
-
5703
case value
-
when "0", 0, '', false, "false", "f", nil
-
2428
false
-
else
-
3275
true
-
end
-
when :integer
-
3193
value.to_i
-
when :string
-
8452
value.to_s
-
when :yaml
-
value.to_yaml
-
else
-
value
-
end
-
end
-
end
-
end
-
1
require 'set'
-
1
require 'uri'
-
-
1
class Content < ActiveRecord::Base
-
1
belongs_to :text_filter
-
-
1
has_many :notifications, :foreign_key => 'content_id'
-
1
has_many :notify_users, :through => :notifications,
-
:source => 'notify_user',
-
:uniq => true
-
1
has_many :redirections
-
1
has_many :redirects, :through => :redirections, :dependent => :destroy
-
-
1
def notify_users=(collection)
-
878
return notify_users.clear if collection.empty?
-
831
self.class.transaction do
-
831
self.notifications.clear
-
831
collection.uniq.each do |u|
-
834
self.notifications.build(:notify_user => u)
-
end
-
831
notify_users.target = collection
-
end
-
end
-
-
1
has_many :triggers, :as => :pending_item, :dependent => :delete_all
-
-
1
scope :published_at_like, lambda {|date_at| {:conditions => {
-
:published_at => (
-
7
if date_at =~ /\d{4}-\d{2}-\d{2}/
-
1
DateTime.strptime(date_at, '%Y-%m-%d').beginning_of_day..DateTime.strptime(date_at, '%Y-%m-%d').end_of_day
-
elsif date_at =~ /\d{4}-\d{2}/
-
5
DateTime.strptime(date_at, '%Y-%m').beginning_of_month..DateTime.strptime(date_at, '%Y-%m').end_of_month
-
elsif date_at =~ /\d{4}/
-
1
DateTime.strptime(date_at, '%Y').beginning_of_year..DateTime.strptime(date_at, '%Y').end_of_year
-
else
-
date_at
-
end
-
)}
-
7
}
-
}
-
3
scope :user_id, lambda {|user_id| {:conditions => ['user_id = ?', user_id]}}
-
1
scope :published, {:conditions => ['published = ?', true]}
-
1
scope :not_published, {:conditions => ['published = ?', false]}
-
1
scope :draft, {:conditions => ['state = ?', 'draft']}
-
1
scope :no_draft, {:conditions => ['state <> ?', 'draft'], :order => 'published_at DESC'}
-
1
scope :searchstring, lambda {|search_string|
-
82
tokens = search_string.split(' ').collect {|c| "%#{c.downcase}%"}
-
38
{:conditions => ['state = ? AND ' + (['(LOWER(body) LIKE ? OR LOWER(extended) LIKE ? OR LOWER(title) LIKE ?)']*tokens.size).join(' AND '),
-
82
"published", *tokens.collect{ |token| [token] * 3 }.flatten]}
-
}
-
1
scope :already_published, lambda { {:conditions => ['published = ? AND published_at < ?', true, Time.now],
-
:order => default_order,
-
5
}}
-
-
1
serialize :whiteboard
-
-
1
attr_accessor :just_changed_published_status
-
1
alias_method :just_changed_published_status?, :just_changed_published_status
-
-
1
after_save :invalidates_cache?
-
30
after_destroy lambda { |c| c.invalidates_cache?(true) }
-
-
1
include Stateful
-
-
1
def invalidates_cache?(on_destruction = false)
-
@invalidates_cache ||= if on_destruction
-
41
just_changed_published_status? || published?
-
else
-
1084
(changed? && published?) || just_changed_published_status?
-
2095
end
-
end
-
-
1
def shorten_url
-
907
return unless self.published
-
-
803
r = Redirect.new
-
803
r.from_path = r.shorten
-
803
r.to_path = self.permalink_url
-
-
# This because updating self.redirects.first raises ActiveRecord::ReadOnlyRecord
-
803
unless (red = self.redirects.first).nil?
-
26
return if red.to_path == self.permalink_url
-
4
r.from_path = red.from_path
-
4
red.destroy
-
4
self.redirects.clear # not sure we need this one
-
end
-
-
781
self.redirects << r
-
end
-
-
1
class << self
-
1
def content_fields *attribs
-
4
class_eval "def content_fields; #{attribs.inspect}; end"
-
end
-
-
1
def find_published(what = :all, options = {})
-
49
with_scope(:find => {:order => default_order, :conditions => {:published => true}}) do
-
49
find what, options
-
end
-
end
-
-
1
def default_order
-
40
'published_at DESC'
-
end
-
-
1
def find_already_published(what = :all, at = nil, options = { })
-
4
if what.respond_to?(:has_key?)
-
what, options = :all, what
-
elsif at.respond_to?(:has_key?)
-
4
options, at = at, nil
-
end
-
4
at ||= options.delete(:at) || Time.now
-
4
with_scope(:find => { :conditions => ['published_at < ?', at]}) do
-
4
find_published(what, options)
-
end
-
end
-
-
1
def find_by_published_at(column_name = :published_at)
-
20
from_where = "FROM #{self.table_name} WHERE #{column_name} is not NULL AND type='#{self.name}'"
-
-
# Implement adapter-specific groupings below, or allow us to fall through to the generic ruby-side grouping
-
-
20
if defined?(ActiveRecord::ConnectionAdapters::MysqlAdapter) && self.connection.is_a?(ActiveRecord::ConnectionAdapters::MysqlAdapter)
-
# MySQL uses date_format
-
find_by_sql("SELECT date_format(#{column_name}, '%Y-%m') AS publication #{from_where} GROUP BY publication ORDER BY publication DESC")
-
-
20
elsif defined?(ActiveRecord::ConnectionAdapters::PostgreSQLAdapter) && self.connection.is_a?(ActiveRecord::ConnectionAdapters::PostgreSQLAdapter)
-
# PostgreSQL uses to_char
-
20
find_by_sql("SELECT to_char(#{column_name}, 'YYYY-MM') AS publication #{from_where} GROUP BY publication ORDER BY publication DESC")
-
-
else
-
# If we don't have an adapter-safe conversion from date -> YYYY-MM,
-
# we'll do the GROUP BY server-side. There won't be very many objects
-
# in this array anyway.
-
date_map = {}
-
dates = find_by_sql("SELECT #{column_name} AS publication #{from_where}")
-
-
dates.map! do |d|
-
d.publication = Time.parse(d.publication).strftime('%Y-%m')
-
d.freeze
-
if !date_map.has_key?(d.publication)
-
date_map[d.publication] = true
-
d
-
end
-
end
-
dates.reject!{|d| d.blank? || d.publication.blank?}
-
dates.sort!{|a,b| b.publication <=> a.publication}
-
-
dates
-
end
-
end
-
-
1
def function_search_no_draft(search_hash)
-
22
list_function = []
-
22
if search_hash.nil?
-
search_hash = {}
-
end
-
-
22
if search_hash[:searchstring]
-
4
list_function << 'searchstring(search_hash[:searchstring])' unless search_hash[:searchstring].to_s.empty?
-
end
-
-
22
if search_hash[:published_at] and %r{(\d\d\d\d)-(\d\d)} =~ search_hash[:published_at]
-
4
list_function << 'published_at_like(search_hash[:published_at])'
-
end
-
-
22
if search_hash[:user_id] && search_hash[:user_id].to_i > 0
-
2
list_function << 'user_id(search_hash[:user_id])'
-
end
-
-
22
if search_hash[:published]
-
2
list_function << 'published' if search_hash[:published].to_s == '1'
-
2
list_function << 'not_published' if search_hash[:published].to_s == '0'
-
end
-
-
22
list_function
-
end
-
end
-
-
1
def html_map field
-
282
content_fields.include? field
-
end
-
-
# Return HTML for some part of this object.
-
1
def html(field = :all)
-
555
if field == :all
-
627
generate_html(:all, content_fields.map{|f| self[f].to_s}.join("\n\n"))
-
282
elsif html_map(field)
-
282
generate_html(field)
-
else
-
raise "Unknown field: #{field.inspect} in content.html"
-
end
-
end
-
-
# Generate HTML for a specific field using the text_filter in use for this
-
# object.
-
1
def generate_html(field, text = nil)
-
555
text ||= self[field].to_s
-
555
html = text_filter.filter_text_for_content(blog, text, self) || text
-
555
html_postprocess(field,html).to_s
-
end
-
-
# Post-process the HTML. This is a noop by default, but Comment overrides it
-
# to enforce HTML sanity.
-
1
def html_postprocess(field,html)
-
358
html
-
end
-
-
1
def whiteboard
-
66
self[:whiteboard] ||= Hash.new
-
end
-
-
# The default text filter. Generally, this is the filter specified by blog.text_filter,
-
# but comments may use a different default.
-
1
def default_text_filter
-
215
blog.text_filter_object
-
end
-
-
# Grab the text filter for this object. It's either the filter specified by
-
# self.text_filter_id, or the default specified in the default blog object.
-
1
def text_filter
-
455
if self[:text_filter_id] && !self[:text_filter_id].zero?
-
67
TextFilter.find(self[:text_filter_id])
-
else
-
388
default_text_filter
-
end
-
end
-
-
# Set the text filter for this object.
-
1
def text_filter= filter
-
211
self.text_filter_id = filter.to_text_filter.id
-
end
-
-
1
def blog
-
7464
@blog ||= Blog.default
-
end
-
-
1
def publish!
-
4
self.published = true
-
4
self.save!
-
end
-
-
1
def withdraw!
-
2
self.withdraw
-
2
self.save!
-
end
-
-
1
def published_at
-
5205
self[:published_at] || self[:created_at]
-
end
-
-
1
def send_notification_to_user(user)
-
4
notify_user_via_email(user)
-
end
-
-
1
def really_send_notifications
-
796
interested_users.each do |value|
-
4
send_notification_to_user(value)
-
end
-
796
return true
-
end
-
-
1
def get_rss_description
-
56
return "" unless blog.rss_description
-
4
return "" unless respond_to?(:user) && self.user && self.user.name
-
-
4
rss_desc = blog.rss_description_text
-
4
rss_desc.gsub!('%author%', self.user.name)
-
4
rss_desc.gsub!('%blog_url%', blog.base_url)
-
4
rss_desc.gsub!('%blog_name%', blog.blog_name)
-
4
rss_desc.gsub!('%permalink_url%', self.permalink_url)
-
4
return rss_desc
-
end
-
-
# TODO: Perhaps permalink_url should produce valid URI's instead of IRI's
-
1
def normalized_permalink_url
-
@normalized_permalink_url ||= Addressable::URI.parse(permalink_url).normalize
-
end
-
-
1
def short_url
-
# Double check because of crappy data in my own old database
-
40
return unless self.published and self.redirects.count > 0
-
32
blog.url_for(redirects.last.from_path, :only_path => false)
-
end
-
-
end
-
-
1
class Object
-
1
def to_text_filter
-
503
TextFilter.find_by_name(self.to_s) || TextFilter.find_by_name('none')
-
end
-
end
-
-
1
class ContentTextHelpers
-
1
include ActionView::Helpers::UrlHelper
-
1
include ActionView::Helpers::TagHelper
-
1
include ActionView::Helpers::SanitizeHelper
-
1
include ActionView::Helpers::TextHelper
-
1
extend ActionView::Helpers::SanitizeHelper::ClassMethods
-
end
-
-
1
class EmailNotifier < ActiveRecord::Observer
-
1
observe Article, Comment
-
-
1
def after_save(content)
-
983
content.send_notifications
-
983
true
-
end
-
end
-
1
require_dependency 'spam_protection'
-
1
class Feedback < Content
-
1
set_table_name "feedback"
-
-
1
include TypoGuid
-
-
1
validate :feedback_not_closed, :on => :create
-
-
1
before_create :create_guid, :article_allows_this_feedback
-
1
before_save :correct_url
-
1
after_save :post_trigger
-
1
after_save :report_classification
-
-
1
has_state(:state,
-
:valid_states => [:unclassified, #initial state
-
:presumed_spam, :just_marked_as_spam, :spam,
-
:just_presumed_ham, :presumed_ham, :just_marked_as_ham, :ham],
-
:handles => [:published?, :status_confirmed?, :just_published?,
-
:mark_as_ham, :mark_as_spam, :confirm_classification,
-
:withdraw,
-
:before_save_handler, :after_initialize_handler,
-
:send_notifications, :post_trigger, :report_classification])
-
-
1
before_save :before_save_handler
-
1
after_initialize :after_initialize_handler
-
-
1
include States
-
-
1
def self.default_order
-
12
'created_at ASC'
-
end
-
-
1
def to_param
-
guid
-
end
-
-
1
def parent
-
article
-
end
-
-
1
def permalink_url(anchor=:ignored, only_path=false)
-
20
article.permalink_url("#{self.class.to_s.downcase}-#{id}",only_path)
-
end
-
-
1
def edit_url(anchor=:ignored)
-
1
blog.url_for(:controller => "/admin/#{self.class.to_s.downcase}s", :action =>"edit", :id => id)
-
end
-
-
1
def delete_url(anchor=:ignored)
-
1
blog.url_for(:controller => "/admin/#{self.class.to_s.downcase}s", :action =>"destroy", :id => id)
-
end
-
-
1
def html_postprocess(field, html)
-
197
helper = ContentTextHelpers.new
-
197
helper.sanitize(helper.auto_link(html)).nofollowify
-
end
-
-
1
def correct_url
-
108
return if url.blank?
-
93
self.url = "http://" + url.to_s unless url =~ %r{^https?://}
-
end
-
-
1
def article_allows_this_feedback
-
93
article && blog_allows_feedback? && article_allows_feedback?
-
end
-
-
1
def blog_allows_feedback?
-
79
true
-
end
-
-
1
def akismet_options
-
{:user_ip => ip,
-
:comment_type => self.class.to_s.downcase,
-
:comment_author => originator,
-
:comment_author_email => email,
-
:comment_author_url => url,
-
:comment_content => body}
-
end
-
-
1
def spam_fields
-
27
[:title, :body, :ip, :url]
-
end
-
-
1
def classify
-
31
begin
-
31
return :ham if self.user_id
-
28
return :spam if blog.default_moderate_comments
-
27
return :ham unless blog.sp_global
-
rescue NoMethodError
-
end
-
-
# Yeah, three state logic is evil...
-
27
case sp_is_spam? || akismet_is_spam?
-
when nil; :spam
-
5
when true; :spam
-
22
when false; :ham
-
end
-
end
-
-
1
def akismet
-
Akismet.new(blog.sp_akismet_key, blog.base_url)
-
end
-
-
1
def sp_is_spam?(options={})
-
27
sp = SpamProtection.new(blog)
-
27
Timeout.timeout(defined?($TESTING) ? 10 : 30) do
-
27
spam_fields.any? do |field|
-
101
sp.is_spam?(self.send(field))
-
end
-
end
-
rescue Timeout::Error => e
-
nil
-
end
-
-
1
def akismet_is_spam?(options={})
-
22
return false if blog.sp_akismet_key.blank?
-
begin
-
Timeout.timeout(defined?($TESTING) ? 30 : 60) do
-
akismet.commentCheck(akismet_options)
-
end
-
rescue Timeout::Error => e
-
nil
-
end
-
end
-
-
1
def mark_as_ham!
-
2
mark_as_ham
-
2
save!
-
end
-
-
1
def mark_as_spam!
-
mark_as_spam
-
save
-
end
-
-
1
def report_as_spam
-
5
report_as('spam')
-
end
-
-
1
def report_as_ham
-
5
report_as('ham')
-
end
-
-
1
def report_as spam_or_ham
-
10
return if blog.sp_akismet_key.blank?
-
begin
-
Timeout.timeout(defined?($TESTING) ? 5 : 3600) { akismet.send("submit#{spam_or_ham.capitalize}", akismet_options) }
-
rescue Timeout::Error => e
-
nil
-
end
-
end
-
-
1
def withdraw!
-
5
withdraw
-
5
self.save!
-
end
-
-
1
def confirm_classification!
-
confirm_classification
-
self.save
-
end
-
-
1
def feedback_not_closed
-
97
if article.comments_closed?
-
2
errors.add(:article_id, 'Comment are closed')
-
end
-
end
-
end
-
1
class Notification < ActiveRecord::Base
-
1
belongs_to :notify_content, :class_name => 'Content', :foreign_key => 'content_id'
-
1
belongs_to :notify_user, :class_name => 'User', :foreign_key => 'user_id'
-
end
-
1
class NotificationMailer < ActionMailer::Base
-
1
helper :mail
-
1
layout nil
-
-
1
def article(article, user)
-
2
setup(user, article)
-
2
@subject = "[#{article.blog.blog_name}] New article: #{article.title}"
-
2
@article = article
-
end
-
-
1
def comment(comment, user)
-
setup(user, comment)
-
@subject = "[#{comment.blog.blog_name}] New comment on #{comment.article.title}"
-
@article = comment.article
-
@comment = comment
-
end
-
-
1
def trackback(sent_at = Time.now)
-
setup(user, trackback)
-
@subject = "[#{trackback.blog.blog_name}] New trackback on #{trackback.article.title}"
-
@article = trackback.article
-
@trackback = trackback
-
end
-
-
1
def notif_user(user)
-
@user = user
-
@blog = Blog.default
-
@recipients = user.email
-
@from = Blog.default.email_from
-
@headers = {'X-Mailer' => "Typo #{TYPO_VERSION}"}
-
end
-
-
1
private
-
1
def setup(user, content)
-
2
@user = user
-
2
@blog = content.blog
-
2
@recipients = user.email
-
2
@from = content.blog.email_from
-
2
@headers = {'X-Mailer' => "Typo #{TYPO_VERSION}"}
-
end
-
-
end
-
1
class Page < Content
-
1
belongs_to :user
-
1
validates_presence_of :title, :body
-
1
validates_uniqueness_of :name
-
-
1
include ConfigManager
-
-
1
serialize :settings, Hash
-
1
setting :password, :string, ''
-
-
1
before_save :set_permalink
-
1
after_save :shorten_url
-
-
1
def set_permalink
-
16
self.name = self.title.to_permalink if self.name.blank?
-
end
-
-
1
def initialize(*args)
-
31
super
-
# Yes, this is weird - PDC
-
31
begin
-
31
self.settings ||= {}
-
rescue Exception => e
-
self.settings = {}
-
end
-
end
-
-
1
content_fields :body
-
-
1
def self.default_order
-
2
'name ASC'
-
end
-
-
1
def self.search_paginate(search_hash, paginate_hash)
-
2
list_function = ["Page"] + function_search_no_draft(search_hash)
-
2
paginate_hash[:order] = 'title ASC'
-
2
list_function << "page(paginate_hash[:page])"
-
2
list_function << "per(paginate_hash[:per_page])"
-
-
2
eval(list_function.join('.'))
-
end
-
-
1
def permalink_url(anchor=nil, only_path=false)
-
18
blog.url_for(
-
:controller => '/articles',
-
:action => 'view_page',
-
:name => name,
-
:anchor => anchor,
-
:only_path => only_path
-
)
-
end
-
-
1
def self.find_by_published_at
-
super(:created_at)
-
end
-
end
-
# FIXME: This class is not a model anymore. Move elsewhere?
-
1
class PageCache
-
1
def self.logger
-
::Rails.logger
-
end
-
-
1
def logger
-
::Rails.logger
-
end
-
-
1
def self.public_path
-
26504
ActionController::Base.page_cache_directory
-
end
-
-
# Delete all file save in path_cache by page_cache system
-
1
def self.sweep_all
-
5338
self.zap_pages(%w{*})
-
end
-
-
1
def self.sweep_theme_cache
-
2671
self.zap_pages(%w{images/theme/* stylesheets/theme/* javascripts/theme/*})
-
end
-
-
1
def self.zap_pages(paths)
-
# Ensure no one is going to wipe his own blog public directory
-
# It happened once on a release and was no fun at all
-
10581
return if public_path == "#{::Rails.root.to_s}/public"
-
10581
paths.each {|v|
-
15923
FileUtils.rm_rf(Dir.glob(public_path + "/#{v}"))
-
}
-
10581
return true
-
end
-
-
end
-
1
require 'rexml/document'
-
1
require 'xmlrpc/client'
-
-
1
class Ping < ActiveRecord::Base
-
1
belongs_to :article
-
-
1
class Pinger
-
1
attr_accessor :article
-
1
attr_accessor :blog
-
-
1
def send_pingback_or_trackback
-
6
begin
-
6
@response = Net::HTTP.get_response(URI.parse(ping.url))
-
6
send_pingback or send_trackback
-
rescue Timeout::Error => err
-
logger.info "Sending pingback or trackback timed out"
-
return
-
rescue => err
-
logger.info "Sending pingback or trackback failed with error: #{err}"
-
end
-
end
-
-
1
def pingback_url
-
12
if response["X-Pingback"]
-
5
response["X-Pingback"]
-
7
elsif response.body =~ /<link rel="pingback" href="([^"]+)" ?\/?>/
-
3
$1
-
end
-
end
-
-
1
def origin_url
-
6
@origin_url
-
end
-
-
1
def response
-
33
@response
-
end
-
-
1
def ping
-
12
@ping
-
end
-
-
1
def send_xml_rpc(*args)
-
3
ping.send(:send_xml_rpc, *args)
-
end
-
-
1
def trackback_url
-
3
rdfs = response.body.scan(/<rdf:RDF.*?<\/rdf:RDF>/m)
-
3
rdfs.each do |rdf|
-
3
xml = REXML::Document.new(rdf)
-
3
xml.elements.each("//rdf:Description") do |desc|
-
3
if rdfs.size == 1 || desc.attributes["dc:identifier"] == ping.url
-
3
return desc.attributes["trackback:ping"]
-
end
-
end
-
end
-
# Didn't find a trackback url, so fall back to the url itself.
-
@ping.url
-
end
-
-
1
def send_pingback
-
6
if pingback_url
-
3
send_xml_rpc(pingback_url, "pingback.ping", origin_url, ping.url)
-
3
return true
-
else
-
3
return false
-
end
-
end
-
-
1
def send_trackback
-
3
do_send_trackback(trackback_url, origin_url)
-
end
-
-
1
def do_send_trackback(trackback_url, origin_url)
-
3
trackback_uri = URI.parse(trackback_url)
-
-
3
post = "title=#{CGI.escape(article.title)}"
-
3
post << "&excerpt=#{CGI.escape(article.html(:body).strip_html[0..254])}"
-
3
post << "&url=#{origin_url}"
-
3
post << "&blog_name=#{CGI.escape(blog.blog_name)}"
-
-
3
path = trackback_uri.path
-
3
path += "?#{trackback_uri.query}" if trackback_uri.query
-
-
3
net_request = Net::HTTP.start(trackback_uri.host, trackback_uri.port) do |http|
-
3
http.post(path, post, 'Content-type' => 'application/x-www-form-urlencoded; charset=utf-8')
-
end
-
end
-
-
1
private
-
-
1
def initialize(origin_url, ping)
-
6
@origin_url = origin_url
-
6
@ping = ping
-
# Make sure these are fetched now for thread safety purposes.
-
6
self.article = ping.article
-
6
self.blog = article.blog
-
end
-
end
-
-
1
def send_pingback_or_trackback(origin_url)
-
6
t = Thread.start(Pinger.new(origin_url, self)) do |pinger|
-
6
pinger.send_pingback_or_trackback
-
end
-
6
t
-
end
-
-
1
def send_weblogupdatesping(server_url, origin_url)
-
2
t = Thread.start(article.blog.blog_name) do |blog_name|
-
2
send_xml_rpc(self.url, "weblogUpdates.ping", blog_name,
-
server_url, origin_url)
-
end
-
2
t
-
end
-
-
1
protected
-
-
1
def send_xml_rpc(xml_rpc_url, name, *args)
-
5
begin
-
5
server = XMLRPC::Client.new2(URI.parse(xml_rpc_url).to_s)
-
-
4
begin
-
4
result = server.call(name, *args)
-
rescue XMLRPC::FaultException => e
-
logger.error(e)
-
end
-
1
rescue Exception => e
-
1
logger.error(e)
-
end
-
end
-
end
-
# coding: utf-8
-
1
class PostType < ActiveRecord::Base
-
1
validates_uniqueness_of :name
-
1
validates_presence_of :name
-
1
validate :name_is_not_read
-
1
before_save :sanitize_title
-
-
1
def name_is_not_read
-
11
errors.add(:name, _("This article type already exists")) if name == 'read'
-
end
-
-
1
def sanitize_title
-
9
self.permalink = self.name.to_permalink
-
end
-
-
end
-
1
class Profile < ActiveRecord::Base
-
1
serialize :modules
-
1
validates_uniqueness_of :label
-
-
1
ADMIN = 'admin'
-
-
1
def modules
-
994
read_attribute(:modules) || []
-
end
-
-
1
def modules=(perms)
-
4876
perms = perms.collect {|p| p.to_sym unless p.blank? }.compact if perms
-
677
write_attribute(:modules, perms)
-
end
-
-
1
def project_modules
-
88
modules.collect { |mod|
-
976
AccessControl.project_module(label, mod) }.uniq.compact
-
end
-
end
-
1
class Redirect < ActiveRecord::Base
-
1
validates_uniqueness_of :from_path
-
1
validates_presence_of :to_path
-
-
1
has_many :redirections
-
-
1
has_many :contents, :through => :redirections
-
-
-
1
def full_to_path
-
4
path = self.to_path
-
4
return path if path =~ /^(https?):\/\/([^\/]*)(.*)/
-
3
url_root = Blog.default.root_path
-
3
path = url_root + path unless url_root.nil? or path[0,url_root.length] == url_root
-
3
path
-
end
-
-
1
def shorten
-
804
if (temp_token = random_token) and self.class.find_by_from_path(temp_token).nil?
-
804
return temp_token
-
else
-
shorten
-
end
-
end
-
-
1
private
-
1
def random_token
-
804
characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890'
-
804
temp_token = ''
-
804
srand
-
804
6.times do
-
4824
pos = rand(characters.length)
-
4824
temp_token += characters[pos..pos]
-
end
-
804
temp_token
-
end
-
end
-
1
class Redirection < ActiveRecord::Base
-
1
belongs_to :content
-
1
belongs_to :redirect
-
end
-
1
require 'tempfile'
-
1
require 'mini_magick'
-
-
1
class Resource < ActiveRecord::Base
-
1
validates_uniqueness_of :filename
-
1
after_destroy :delete_filename_on_disk
-
1
before_validation :uniq_filename_on_disk, :on => :create
-
-
1
belongs_to :article
-
-
1
scope :without_images, where("mime NOT LIKE '%image%'")
-
1
scope :images, where("mime LIKE '%image%'")
-
1
scope :by_filename, order("filename")
-
1
scope :by_created_at, order("created_at DESC")
-
-
1
scope :without_images_by_filename, without_images.by_filename
-
1
scope :images_by_created_at, images.by_created_at
-
-
1
def fullpath(file = nil)
-
36
"#{::Rails.root.to_s}/public/files/#{file.nil? ? filename : file}"
-
end
-
-
1
def write_to_disk(up)
-
1
begin
-
# create the public/files dir if it doesn't exist
-
1
FileUtils.mkdir(fullpath('')) unless File.directory?(fullpath(''))
-
1
if up.kind_of?(Tempfile) and !up.local_path.nil? and File.exist?(up.local_path)
-
File.chmod(0600, up.local_path)
-
FileUtils.copy(up.local_path, fullpath)
-
elsif up.kind_of?(ActionDispatch::Http::UploadedFile)
-
File.chmod(0600, up.path)
-
FileUtils.copy(up.path, fullpath)
-
else
-
1
bytes = up
-
1
if up.kind_of?(StringIO)
-
up.rewind
-
bytes = up.read
-
end
-
2
File.open(fullpath, "wb") { |f| f.write(bytes) }
-
end
-
1
File.chmod(0644, fullpath)
-
1
self.size = File.stat(fullpath).size rescue 0
-
1
create_thumbnail
-
1
update
-
1
self
-
rescue
-
raise
-
end
-
end
-
-
1
def create_thumbnail
-
1
blog = Blog.default
-
1
return unless self.mime =~ /image/
-
1
return unless File.exists?(fullpath("#{self.filename}"))
-
1
begin
-
1
img_orig = MiniMagick::Image.from_file(fullpath(self.filename))
-
-
['medium', 'thumb'].each do |size|
-
next if File.exists?(fullpath("#{size}_#{self.filename}"))
-
resize = blog.send("image_#{size.to_s}_size").to_s
-
img_orig = img_orig.resize("#{resize}x#{resize}")
-
img_orig.write(fullpath("#{size}_#{self.filename}"))
-
end
-
rescue
-
1
nil
-
end
-
end
-
-
1
protected
-
1
def uniq_filename_on_disk
-
23
i = 0
-
23
raise if filename.empty?
-
23
tmpfile = File.basename(filename.gsub(/\\/, '/')).gsub(/[^\w\.\-]/,'_')
-
23
filename = tmpfile
-
23
while File.exist?(fullpath(tmpfile))
-
1
i += 1
-
1
tmpfile = filename.sub(/^(.*?)(\.[^\.]+)?$/, '\1'+"#{i}"+'\2')
-
end
-
23
self.filename = tmpfile
-
end
-
1
def delete_filename_on_disk
-
2
File.unlink(fullpath(filename)) if File.exist?(fullpath(filename))
-
end
-
end
-
1
class Right < ActiveRecord::Base
-
1
validates_uniqueness_of :name
-
1
has_and_belongs_to_many :profiles
-
end
-
1
class Sidebar < ActiveRecord::Base
-
1
serialize :config
-
-
1
class Field
-
1
attr_accessor :key
-
1
attr_accessor :options
-
1
attr_accessor :default
-
1
include ApplicationHelper
-
1
include ActionView::Helpers::TagHelper
-
1
include ActionView::Helpers::FormTagHelper
-
1
include ActionView::Helpers::FormOptionsHelper
-
-
1
def initialize(key, default, options = { })
-
22
@key, @default, @options = key.to_s, default, options
-
end
-
-
1
def label
-
options[:label] || key.humanize.gsub(/url/i, 'URL')
-
end
-
-
1
def label_html(sidebar)
-
content_tag('label', label)
-
end
-
-
1
def input_html(sidebar)
-
text_field_tag(input_name(sidebar), sidebar.config[key], { :class => 'span4'})
-
end
-
-
1
def line_html(sidebar)
-
html = label_html(sidebar)
-
html << content_tag(:div, input_html(sidebar), :class => 'input')
-
end
-
-
1
def input_name(sidebar)
-
"configure[#{sidebar.id}][#{key}]"
-
end
-
-
1
def canonicalize(value)
-
value
-
end
-
-
1
class SelectField < self
-
1
def input_html(sidebar)
-
select_tag(input_name(sidebar),
-
options_for_select(options[:choices], sidebar.config[key]),
-
options)
-
end
-
end
-
-
1
class TextAreaField < self
-
1
def input_html(sidebar)
-
html_options = { "rows" => "10", "class" => "span4" }.update(options.stringify_keys)
-
text_area_tag(input_name(sidebar), sidebar.config[key], html_options)
-
end
-
end
-
-
1
class RadioField < self
-
1
def input_html(sidebar)
-
options[:choices].collect do |choice|
-
value = value_for(choice)
-
radio_button_tag(input_name(sidebar), value,
-
value == sidebar.config[key], options) +
-
content_tag('label', label_for(choice))
-
end.join("<br />")
-
end
-
-
1
def label_for(choice)
-
choice.is_a?(Array) ? choice.last : choice.to_s.humanize
-
end
-
-
1
def value_for(choice)
-
choice.is_a?(Array) ? choice.first : choice
-
end
-
end
-
-
1
class CheckBoxField < self
-
1
def input_html(sidebar)
-
hidden_field_tag(input_name(sidebar),0)+
-
check_box_tag(input_name(sidebar), 1, sidebar.config[key], options)
-
end
-
-
1
def line_html(sidebar)
-
input_html(sidebar) + ' ' + label_html(sidebar) + '<br >'
-
end
-
-
1
def canonicalize(value)
-
case value
-
when "0"
-
false
-
else
-
true
-
end
-
end
-
end
-
-
1
def self.build(key, default, options)
-
22
field = class_for(options).new(key, default, options)
-
end
-
-
1
def self.class_for(options)
-
22
case options[:input_type]
-
when :text_area
-
1
TextAreaField
-
when :textarea
-
TextAreaField
-
when :radio
-
1
RadioField
-
when :checkbox
-
10
CheckBoxField
-
when :select
-
SelectField
-
else
-
10
if options[:choices]
-
SelectField
-
else
-
10
self
-
end
-
end
-
end
-
end
-
-
1
class << self
-
1
attr_accessor :view_root
-
-
1
def find *args
-
83
begin
-
83
super
-
1
rescue ActiveRecord::SubclassNotFound => e
-
13
available = available_sidebars.map {|klass| klass.to_s}
-
1
set_inheritance_column :bogus
-
1
super.each do |record|
-
2
unless available.include? record.type
-
1
record.delete
-
end
-
end
-
1
set_inheritance_column :type
-
1
super
-
end
-
end
-
-
1
def find_all_visible
-
1
find :all, :conditions => 'active_position is not null', :order => 'active_position'
-
end
-
-
1
def find_all_staged
-
find :all, :conditions => 'staged_position is not null', :order => 'staged_position'
-
end
-
-
1
def purge
-
delete_all('active_position is null and staged_position is null')
-
end
-
-
1
def setting(key, default=nil, options = { })
-
22
return if instance_methods.include?(key.to_s)
-
22
fields << Field.build(key.to_s, default, options)
-
22
fieldmap.update(key.to_s => fields.last)
-
22
self.send(:define_method, key) do
-
8
self.config[key.to_s]
-
end
-
22
self.send(:define_method, "#{key}=") do |newval|
-
3
self.config[key.to_s] = newval
-
end
-
end
-
-
1
def fieldmap
-
22
@fieldmap ||= {}
-
end
-
-
1
def fields
-
61
@fields ||= []
-
end
-
-
1
def fields=(newval)
-
@fields = newval
-
end
-
-
1
def description(desc = nil)
-
26
if desc
-
12
@description = desc
-
else
-
14
@description
-
end
-
end
-
-
1
def lifetime(timeout = nil)
-
if timeout
-
@lifetime = timeout
-
else
-
@lifetime
-
end
-
end
-
-
1
def short_name
-
31
self.to_s.underscore.split(%r{_}).first
-
end
-
-
1
def path_name
-
2
self.to_s.underscore
-
end
-
-
1
def display_name(new_dn = nil)
-
17
@display_name = new_dn if new_dn
-
17
@display_name || short_name.humanize
-
end
-
-
1
def available_sidebars
-
39
Sidebar.descendants.sort_by { |klass| klass.to_s }
-
end
-
end
-
-
1
def blog
-
Blog.default
-
end
-
-
1
def initialize(*args)
-
16
if block_given?
-
super(*args) { |instance| yield instance }
-
else
-
16
super(*args)
-
end
-
16
self.class.fields.each do |field|
-
31
unless config.has_key?(field.key)
-
28
config[field.key] = field.default
-
end
-
end
-
end
-
-
-
1
def publish
-
self.active_position=self.staged_position
-
end
-
-
1
def config
-
72
self[:config] ||= { }
-
end
-
-
1
def sidebar_controller
-
@sidebar_controller ||= SidebarController.available_sidebars.find { |s| s.short_name == self.controller }
-
end
-
-
1
def html_id
-
short_name + '-' + id.to_s
-
end
-
-
1
def parse_request(contents, params)
-
end
-
-
1
def fields
-
1
self.class.fields
-
end
-
-
1
def fieldmap(field = nil)
-
if field
-
self.class.fieldmap[field.to_s]
-
else
-
self.class.fieldmap
-
end
-
end
-
-
1
def description
-
2
self.class.description
-
end
-
-
1
def short_name
-
self.class.short_name
-
end
-
-
1
def display_name
-
self.class.display_name
-
end
-
-
1
def content_partial
-
2
"/#{self.class.path_name}/content"
-
end
-
-
1
def to_locals_hash
-
1
fields.inject({ :sidebar => self }) do |hash, field|
-
hash.merge(field.key => config[field.key])
-
end
-
end
-
-
1
def lifetime
-
self.class.lifetime
-
end
-
-
1
def view_root
-
1
self.class.view_root
-
end
-
end
-
-
1
class Tag < ActiveRecord::Base
-
1
has_and_belongs_to_many :articles, :order => 'created_at DESC'
-
-
1
validates_uniqueness_of :name
-
-
# Satisfy GroupingController needs.
-
1
attr_accessor :description, :keywords
-
-
1
def self.get(name)
-
25
tagname = name.to_url
-
25
find_or_create_by_name(tagname, :display_name => name)
-
end
-
-
1
def self.find_by_name_or_display_name(tagname, name)
-
self.find(:first, :conditions => [%{name = ? OR display_name = ? OR display_name = ?}, tagname, tagname, name])
-
end
-
-
1
def ensure_naming_conventions
-
86
if self.display_name.blank?
-
2
self.display_name = self.name
-
end
-
86
self.name = self.display_name.to_url
-
end
-
-
1
before_save :ensure_naming_conventions
-
-
1
def self.find_all_with_article_counters(limit=20, orderby='article_counter DESC', start=0)
-
# Only count published articles
-
3
self.find_by_sql([%{
-
SELECT tags.id, tags.name, tags.display_name, COUNT(articles_tags.article_id) AS article_counter
-
FROM #{Tag.table_name} tags LEFT OUTER JOIN #{Tag.table_name_prefix}articles_tags#{Tag.table_name_suffix} articles_tags
-
ON articles_tags.tag_id = tags.id
-
LEFT OUTER JOIN #{Tag.table_name_prefix + Article.table_name + Tag.table_name_prefix} articles
-
ON articles_tags.article_id = articles.id
-
WHERE articles.published = ?
-
GROUP BY tags.id, tags.name, tags.display_name
-
ORDER BY #{orderby}
-
LIMIT ? OFFSET ?
-
2
},true, limit, start]).each{|item| item.article_counter = item.article_counter.to_i }
-
end
-
-
1
def self.merge(from, to)
-
self.update_by_sql([%{UPDATE article_tags SET tag_id = #{to} WHERE tag_id = #{from} }])
-
end
-
-
1
def self.find_by_permalink(name)
-
18
self.find_by_name(name)
-
end
-
-
1
def self.to_prefix
-
'tag'
-
end
-
-
# Return all tags with the char or string
-
# send by parameter
-
1
def self.find_with_char(char)
-
6
find :all, :conditions => ['name LIKE ? ', "%#{char}%"], :order => 'name ASC'
-
end
-
-
1
def self.collection_to_string tags
-
65
tags.map(&:display_name).sort.map { |name| name =~ / / ? "\"#{name}\"" : name }.join ", "
-
end
-
-
1
def published_articles
-
2
articles.already_published
-
end
-
-
1
def permalink
-
60
self.name
-
end
-
-
1
def permalink_url(anchor=nil, only_path=false)
-
60
blog = Blog.default # remove me...
-
-
60
blog.url_for(
-
:controller => 'tags',
-
:action => 'show',
-
:id => permalink,
-
:only_path => only_path
-
)
-
end
-
-
1
def to_param
-
permalink
-
end
-
-
end
-
1
require 'net/http'
-
1
require './app/models/content.rb'
-
-
1
class TextFilter < ActiveRecord::Base
-
1
serialize :filters
-
1
serialize :params
-
-
1
@text_helper = ContentTextHelpers.new
-
-
1
def sanitize(*args,&blk)
-
self.class.sanitize(*args,&blk)
-
end
-
-
1
def self.available_filters
-
1206
TextFilterPlugin.filter_map.values
-
end
-
-
1
def self.macro_filters
-
276
available_filters.select { |filter| TextFilterPlugin::Macro > filter }
-
end
-
-
1
TYPEMAP={TextFilterPlugin::Markup => "markup",
-
TextFilterPlugin::MacroPre => "macropre",
-
TextFilterPlugin::MacroPost => "macropost",
-
TextFilterPlugin::PostProcess => "postprocess",
-
TextFilterPlugin => "other"}
-
-
1
def self.available_filter_types
-
1144
filters=available_filters
-
1144
@cached_filter_types ||= {}
-
-
1144
unless @cached_filter_types[filters]
-
1
types={"macropre" => [],
-
"macropost" => [],
-
"markup" => [],
-
"postprocess" => [],
-
"other" => []}
-
-
12
filters.each { |filter| types[TYPEMAP[filter.superclass]].push(filter) }
-
-
1
@cached_filter_types[filters] = types
-
end
-
1144
@cached_filter_types[filters]
-
end
-
-
-
-
1
def self.filters_map
-
585
TextFilterPlugin.filter_map
-
end
-
-
1
def self.filter_text(blog, text, content, filters, filterparams={})
-
585
map=TextFilter.filters_map
-
-
585
filters.each do |filter|
-
1748
next if filter == nil
-
1743
begin
-
1743
filter_class = map[filter.to_s]
-
1743
next unless filter_class
-
1730
text = filter_class.filtertext(blog, content, text, :filterparams => filterparams)
-
rescue => err
-
logger.error "Filter #{filter} failed: #{err}"
-
end
-
end
-
-
585
text
-
end
-
-
1
def self.filter_text_by_name(blog, text, filtername)
-
3
f = TextFilter.find_by_name(filtername)
-
3
f.filter_text_for_content blog, text, nil
-
end
-
-
1
def filter_text_for_content(blog, text, content)
-
558
self.class.filter_text(blog, text, content,
-
[:macropre, markup, :macropost, filters].flatten, params)
-
end
-
-
1
def help
-
filter_map = TextFilter.filters_map
-
filter_types = TextFilter.available_filter_types
-
-
help = []
-
help.push(filter_map[markup])
-
filter_types['macropre'].sort_by {|f| f.short_name}.each { |f| help.push f }
-
filter_types['macropost'].sort_by {|f| f.short_name}.each { |f| help.push f }
-
filters.each { |f| help.push(filter_map[f.to_s]) }
-
-
help_text = help.collect do |f|
-
f.help_text.blank? ? '' : "<h3>#{f.display_name}</h3>\n#{BlueCloth.new(f.help_text).to_html}\n"
-
end
-
-
help_text.join("\n")
-
end
-
-
1
def commenthelp
-
filter_map = TextFilter.filters_map
-
-
help = [filter_map[markup]]
-
filters.each { |f| help.push(filter_map[f.to_s]) }
-
-
help_text = help.collect do |f|
-
f.help_text.blank? ? '' : "#{BlueCloth.new(f.help_text).to_html}\n"
-
end.join("\n")
-
-
return help_text
-
end
-
-
121
def to_s; self.name; end
-
-
1
def to_text_filter
-
95
self
-
end
-
end
-
1
class Theme
-
1
cattr_accessor :cache_theme_lookup
-
1
@@cache_theme_lookup = false
-
-
1
attr_accessor :name, :path, :description_html
-
-
1
def initialize(name, path)
-
119
@name, @path = name, path
-
end
-
-
# TODO: Remove check for old-fashioned theme layout.
-
1
def layout(action=:default)
-
94
if action.to_s == 'view_page'
-
if File.exists? "#{::Rails.root.to_s}/themes/#{name}/views/layouts/pages.html.erb"
-
return "layouts/pages.html.erb"
-
end
-
if File.exists? "#{::Rails.root.to_s}/themes/#{name}/layouts/pages.html.erb"
-
return "#{::Rails.root.to_s}/themes/#{name}/layouts/pages.html.erb"
-
end
-
end
-
94
if File.exists? "#{::Rails.root.to_s}/themes/#{name}/views/layouts/default.html.erb"
-
93
return "layouts/default.html.erb"
-
end
-
1
"#{::Rails.root.to_s}/themes/#{name}/layouts/default.html.erb"
-
end
-
-
1
def description
-
8
File.read("#{path}/about.markdown") rescue "### #{name}"
-
end
-
-
# Find a theme, given the theme name
-
1
def self.find(name)
-
102
self.new(name,theme_path(name))
-
end
-
-
1
def self.themes_root
-
106
::Rails.root.to_s + "/themes"
-
end
-
-
1
def self.theme_path(name)
-
102
themes_root + "/" + name
-
end
-
-
1
def self.theme_from_path(path)
-
16
name = path.scan(/[-\w]+$/i).flatten.first
-
16
self.new(name, path)
-
end
-
-
1
def self.find_all
-
2
installed_themes.map do |path|
-
14
theme_from_path(path)
-
end
-
end
-
-
1
def self.installed_themes
-
2
cache_theme_lookup ? @theme_cache ||= search_theme_directory : search_theme_directory
-
end
-
-
1
def self.search_theme_directory
-
3
glob = "#{themes_root}/[a-zA-Z0-9]*"
-
3
Dir.glob(glob).select do |file|
-
17
File.readable?("#{file}/about.markdown")
-
end.compact
-
end
-
end
-
1
require_dependency 'spam_protection'
-
-
1
class Trackback < Feedback
-
1
belongs_to :article
-
1
content_fields :excerpt
-
1
validates_presence_of :title, :excerpt, :url
-
-
1
attr_accessible :url, :blog_name, :title, :excerpt, :ip, :published, :article_id
-
-
1
def initialize(*args, &block)
-
31
super(*args, &block)
-
31
self.title ||= self.url
-
31
self.blog_name ||= ""
-
end
-
-
1
before_create :process_trackback
-
-
1
def process_trackback
-
14
if excerpt.length >= 251
-
# this limits excerpt to 250 chars, including the trailing "..."
-
self.excerpt = excerpt[0..246] << "..."
-
end
-
end
-
-
1
def article_allows_feedback?
-
14
return true if article.allow_pings?
-
errors.add(:article, 'Article is not pingable')
-
false
-
end
-
-
1
def blog_allows_feedback?
-
14
return true unless blog.global_pings_disable
-
errors.add(:article, "Pings are disabled")
-
false
-
end
-
-
1
def originator
-
blog_name
-
end
-
-
1
def body
-
4
excerpt
-
end
-
-
1
def body=(newval)
-
1
self.excerpt = newval
-
end
-
-
1
def rss_author(xml)
-
end
-
-
1
def rss_title(xml)
-
xml.title feed_title
-
end
-
-
1
def feed_title
-
13
"Trackback from #{blog_name}: #{title} on #{article.title}"
-
end
-
end
-
-
1
class Trigger < ActiveRecord::Base
-
1
belongs_to :pending_item, :polymorphic => true
-
-
1
class << self
-
1
def post_action(due_at, item, method='came_due')
-
create!(:due_at => due_at, :pending_item => item,
-
11
:trigger_method => method)
-
11
fire
-
end
-
-
1
def fire
-
476
begin
-
476
destroy_all ['due_at <= ?', Time.now]
-
476
true
-
rescue
-
@current_version = Migrator.current_schema_version
-
@needed_version = Migrator.max_schema_version
-
@support = Migrator.db_supports_migrations?
-
@needed_migrations = Migrator.available_migrations[@current_version..@needed_version].collect do |mig|
-
mig.scan(/\d+\_([\w_]+)\.rb$/).flatten.first.humanize
-
end
-
if @needed_migrations
-
Migrator.migrate
-
end
-
end
-
end
-
-
1
def remove(pending_item, conditions = { })
-
4
return if pending_item.new_record?
-
conditions_string =
-
conditions.keys.collect{ |k| "(#{k} = :#{k})"}.join(' AND ')
-
with_scope(:find => { :conditions => [conditions_string, conditions]}) do
-
delete_all(["pending_item_id = ? AND pending_item_type = ?",
-
pending_item.id, pending_item.class.to_s])
-
end
-
end
-
end
-
-
1
before_destroy :trigger_pending_item
-
-
1
def trigger_pending_item
-
4
pending_item.send(trigger_method) if pending_item
-
4
return true
-
end
-
end
-
1
require 'digest/sha1'
-
-
# Typo user.
-
1
class User < ActiveRecord::Base
-
1
include ConfigManager
-
-
1
belongs_to :profile
-
1
belongs_to :text_filter
-
-
1
delegate :name, :to => :text_filter, :prefix => true
-
1
delegate :label, :to => :profile, :prefix => true
-
-
1
has_many :notifications, :foreign_key => 'notify_user_id'
-
1
has_many :notify_contents, :through => :notifications,
-
:source => 'notify_content',
-
:uniq => true
-
-
1
has_many :articles, :order => 'created_at DESC'
-
-
1
serialize :settings, Hash
-
-
# Settings
-
1
setting :notify_watch_my_articles, :boolean, true
-
1
setting :editor, :string, 'visual'
-
1
setting :firstname, :string, ''
-
1
setting :lastname, :string, ''
-
1
setting :nickname, :string, ''
-
1
setting :description, :string, ''
-
1
setting :url, :string, ''
-
1
setting :msn, :string, ''
-
1
setting :aim, :string, ''
-
1
setting :yahoo, :string, ''
-
1
setting :twitter, :string, ''
-
1
setting :jabber, :string, ''
-
1
setting :show_url, :boolean, false
-
1
setting :show_msn, :boolean, false
-
1
setting :show_aim, :boolean, false
-
1
setting :show_yahoo, :boolean, false
-
1
setting :show_twitter, :boolean, false
-
1
setting :show_jabber, :boolean, false
-
1
setting :admin_theme, :string, 'blue'
-
-
# echo "typo" | sha1sum -
-
1
class_attribute :salt
-
-
1
def self.salt
-
642
'20ac4d290c2293702c64b3b287ae5ea79b26a5c1'
-
end
-
-
1
attr_accessor :last_venue
-
-
1
def initialize(*args)
-
832
super
-
832
self.settings ||= {}
-
end
-
-
-
1
def self.authenticate(login, pass)
-
46
find(:first,
-
:conditions => ["login = ? AND password = ? AND state = ?", login, password_hash(pass), 'active'])
-
end
-
-
1
def update_connection_time
-
5
self.last_venue = last_connection
-
5
self.last_connection = Time.now
-
5
self.save
-
end
-
-
# These create and unset the fields required for remembering users between browser closes
-
1
def remember_me
-
1
remember_me_for 2.weeks
-
end
-
-
1
def remember_me_for(time)
-
1
remember_me_until time.from_now.utc
-
end
-
-
1
def remember_me_until(time)
-
1
self.remember_token_expires_at = time
-
1
self.remember_token = Digest::SHA1.hexdigest("#{email}--#{remember_token_expires_at}")
-
1
save(:validate => false)
-
end
-
-
1
def forget_me
-
4
self.remember_token_expires_at = nil
-
4
self.remember_token = nil
-
4
save(:validate => false)
-
end
-
-
1
def permalink_url(anchor=nil, only_path=false)
-
1
blog = Blog.default # remove me...
-
-
1
blog.url_for(
-
:controller => 'authors',
-
:action => 'show',
-
:id => login,
-
:only_path => only_path
-
)
-
end
-
-
1
def self.authenticate?(login, pass)
-
2
user = self.authenticate(login, pass)
-
2
return false if user.nil?
-
1
return true if user.login == login
-
-
false
-
end
-
-
1
def self.find_by_permalink(permalink)
-
self.find_by_login(permalink).tap do |user|
-
raise ActiveRecord::RecordNotFound unless user
-
end
-
end
-
-
1
def project_modules
-
88
profile.project_modules
-
end
-
-
# Generate Methods takes from AccessControl rules
-
# Example:
-
#
-
# def publisher?
-
# profile.label == :publisher
-
# end
-
1
AccessControl.roles.each do |role|
-
3
define_method "#{role.to_s.downcase}?" do
-
profile.label.to_s.downcase == role.to_s.downcase
-
end
-
end
-
-
1
def self.to_prefix
-
'author'
-
end
-
-
1
def simple_editor?
-
69
editor == 'simple'
-
end
-
-
1
def password=(newpass)
-
714
@password = newpass
-
end
-
-
1
def password(cleartext = nil)
-
3194
if cleartext
-
768
@password.to_s
-
else
-
2426
@password || read_attribute("password")
-
end
-
end
-
-
1
def article_counter
-
articles.size
-
end
-
-
1
def display_name
-
name
-
end
-
-
1
def permalink
-
login
-
end
-
-
1
def to_param
-
permalink
-
end
-
-
1
def admin?
-
29
profile.label == Profile::ADMIN
-
end
-
-
1
protected
-
-
# Apply SHA1 encryption to the supplied password.
-
# We will additionally surround the password with a salt
-
# for additional security.
-
1
def self.password_hash(pass)
-
727
Digest::SHA1.hexdigest("#{salt}--#{pass}--")
-
end
-
-
1
def password_hash(pass)
-
681
self.class.password_hash(pass)
-
end
-
-
1
before_create :crypt_password
-
-
# Before saving the record to database we will crypt the password
-
# using SHA1.
-
# We never store the actual password in the DB.
-
# But before the encryption, we send an email to user for he can remind his
-
# password
-
1
def crypt_password
-
681
send_create_notification
-
681
write_attribute "password", password_hash(password(true))
-
681
@password = nil
-
end
-
-
1
before_update :crypt_unless_empty
-
-
# If the record is updated we will check if the password is empty.
-
# If its empty we assume that the user didn't want to change his
-
# password and just reset it to the old value.
-
1
def crypt_unless_empty
-
87
if password(true).empty?
-
77
user = self.class.find(self.id)
-
77
write_attribute "password", user.password
-
else
-
10
crypt_password
-
end
-
end
-
-
1
before_validation :set_default_profile
-
-
1
def set_default_profile
-
781
if User.count.zero?
-
670
self.profile ||= Profile.find_by_label('admin')
-
else
-
111
self.profile ||= Profile.find_by_label('contributor')
-
end
-
end
-
-
1
validates_uniqueness_of :login, :on => :create
-
1
validates_uniqueness_of :email, :on => :create
-
1
validates_length_of :password, :within => 5..40, :if => Proc.new { |user|
-
781
user.read_attribute('password').nil? or user.password.to_s.length > 0
-
}
-
-
1
validates_presence_of :login
-
1
validates_presence_of :email
-
-
1
validates_confirmation_of :password
-
1
validates_length_of :login, :within => 3..40
-
-
-
1
private
-
-
# Send a mail of creation user to the user create
-
1
def send_create_notification
-
begin
-
email_notification = NotificationMailer.notif_user(self)
-
EmailNotify.send_message(self, email_notification)
-
rescue => err
-
logger.error "Unable to send notification of create user email: #{err.inspect}"
-
end
-
end
-
end
-
1
class WebNotifier < ActiveRecord::Observer
-
1
observe Article
-
-
1
def after_save(article)
-
891
article.send_pings
-
end
-
end
-
# coding: utf-8
-
1
Localization.define("da_DK") do |l|
-
-
# app/controllers/accounts_controller.rb
-
1
l.store "Login successful", ""
-
1
l.store "Login unsuccessful", ""
-
1
l.store "An email has been successfully sent to your address with your new password", ""
-
1
l.store "Oops, something wrong just happened", ""
-
1
l.store "Successfully logged out", ""
-
1
l.store "login", ""
-
1
l.store "signup", ""
-
1
l.store "Recover your password", ""
-
-
# app/controllers/admin/categories_controller.rb
-
1
l.store "Category was successfully saved.", ""
-
1
l.store "Category could not be saved.", ""
-
-
# app/controllers/admin/content_controller.rb
-
1
l.store "Error, you are not allowed to perform this action", ""
-
1
l.store "Preview", ""
-
1
l.store "Article was successfully created", ""
-
1
l.store "Article was successfully updated.", ""
-
-
# app/controllers/admin/feedback_controller.rb
-
1
l.store "Deleted", ""
-
1
l.store "Not found", ""
-
1
l.store "Deleted %d item(s)", ""
-
1
l.store "Marked %d item(s) as Ham", ""
-
1
l.store "Marked %d item(s) as Spam", ""
-
1
l.store "Confirmed classification of %s item(s)", ""
-
1
l.store "Not implemented", ""
-
1
l.store "All spam have been deleted", ""
-
1
l.store "Comment was successfully created.", ""
-
1
l.store "Comment was successfully updated.", ""
-
-
# app/controllers/admin/pages_controller.rb
-
1
l.store "Page was successfully created.", ""
-
1
l.store "Page was successfully updated.", ""
-
-
# app/controllers/admin/profiles_controller.rb
-
1
l.store "User was successfully updated.", ""
-
-
# app/controllers/admin/resources_controller.rb
-
1
l.store "Error occurred while updating Content Type.", ""
-
1
l.store "complete", ""
-
1
l.store "File uploaded: ", ""
-
1
l.store "Unable to upload", ""
-
1
l.store "Metadata was successfully updated.", ""
-
1
l.store "Not all metadata was defined correctly.", ""
-
1
l.store "Content Type was successfully updated.", ""
-
-
# app/controllers/admin/settings_controller.rb
-
1
l.store "Please review and save the settings before continuing", ""
-
1
l.store "config updated.", ""
-
-
# app/controllers/admin/sidebar_controller.rb
-
1
l.store "It seems something went wrong. Maybe some of your sidebars are actually missing and you should either reinstall them or remove them manually", ""
-
-
# app/controllers/admin/tags_controller.rb
-
1
l.store "Tag was successfully updated.", ""
-
-
# app/controllers/admin/themes_controller.rb
-
1
l.store "Theme changed successfully", ""
-
1
l.store "You are not authorized to open this file", ""
-
1
l.store "File saved successfully", ""
-
1
l.store "Unable to write file", ""
-
-
# app/controllers/admin/users_controller.rb
-
1
l.store "User was successfully created.", ""
-
-
# app/controllers/application_controller.rb
-
1
l.store "Localization.rtl", ""
-
-
# app/controllers/articles_controller.rb
-
1
l.store "No posts found...", ""
-
1
l.store "Archives for", ""
-
1
l.store "Archives for ", ""
-
1
l.store ", Articles for ", ""
-
-
# app/controllers/grouping_controller.rb
-
1
l.store "page", ""
-
1
l.store "everything about", ""
-
-
# app/helpers/admin/base_helper.rb
-
1
l.store "Cancel", "Anuller"
-
1
l.store "Store", ""
-
1
l.store "Delete", "Slet"
-
1
l.store "delete", ""
-
1
l.store "Delete content", ""
-
1
l.store "Are you sure?", ""
-
1
l.store "Please select", "Vælg venligst"
-
1
l.store "There are no %s yet. Why don't you start and create one?", ""
-
1
l.store "or", "eller"
-
1
l.store "Save", "Gem"
-
1
l.store "Edit", "Rediger"
-
1
l.store "Show", ""
-
1
l.store "Published", "Offentliggjort"
-
1
l.store "Unpublished", "Ikke offentliggjort"
-
1
l.store "Show help on Typo macros", ""
-
1
l.store "Back to overview", "Tilbage til oversigten"
-
1
l.store "Name", "Navn"
-
1
l.store "Description", "Beskrivelse"
-
1
l.store "Tag", "Tag"
-
-
# app/helpers/admin/categories_helper.rb
-
1
l.store "no articles", "ingen artikler"
-
1
l.store "1 article", "1 artikel"
-
1
l.store "%d articles", "%d artikler"
-
-
# app/helpers/admin/content_helper.rb
-
1
l.store "Destroy this draft", ""
-
-
# app/helpers/admin/feedback_helper.rb
-
1
l.store "Show conversation", ""
-
1
l.store "Flag as %s", ""
-
-
# app/helpers/application_helper.rb
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M:%%S GMT", ""
-
1
l.store "%%d. %%b", ""
-
1
l.store "%d comments", "%d kommentarer"
-
1
l.store "no comments", "ingen kommentarer"
-
1
l.store "1 comment", "1 kommentar"
-
1
l.store "no trackbacks", "ingen trackbacks"
-
1
l.store "1 trackback", "1 trackback"
-
1
l.store "%d trackbacks", "%d trackbacks"
-
-
# app/helpers/content_helper.rb
-
1
l.store "Posted in", "Offentliggjort i"
-
1
l.store "Tags", "Tags"
-
1
l.store "no posts", ""
-
1
l.store "1 post", ""
-
1
l.store "%d posts", ""
-
-
# app/models/article.rb
-
1
l.store "Original article writen by", ""
-
1
l.store "and published on", ""
-
1
l.store "direct link to this article", ""
-
1
l.store "If you are reading this article elsewhere than", ""
-
1
l.store "it has been illegally reproduced and without proper authorization", ""
-
-
# app/models/blog.rb
-
1
l.store "You need a permalink format with an identifier : %%month%%, %%year%%, %%day%%, %%title%%", ""
-
1
l.store "Can't end in .rss or .atom. These are reserved to be used for feed URLs", ""
-
-
# app/models/feedback/states.rb
-
1
l.store "Unclassified", ""
-
1
l.store "Just Presumed Ham", ""
-
1
l.store "Ham?", ""
-
1
l.store "Just Marked As Ham", ""
-
1
l.store "Ham", ""
-
1
l.store "Spam?", ""
-
1
l.store "Just Marked As Spam", ""
-
1
l.store "Spam", ""
-
-
# app/views/accounts/login.html.erb
-
1
l.store "I've lost my password", ""
-
1
l.store "Login", "Log ind"
-
1
l.store "Password", "Kodeord"
-
1
l.store "Remember me", ""
-
1
l.store "Submit", "Indsend"
-
1
l.store "Back to ", ""
-
-
# app/views/accounts/recover_password.html.erb
-
1
l.store "Username or email", ""
-
-
# app/views/accounts/signup.html.erb
-
1
l.store "Create an account", ""
-
1
l.store "Username", "Brugernavn"
-
1
l.store "Email", "Email"
-
1
l.store "Signup", "Tilmelding"
-
-
# app/views/admin/categories/_categories.html.erb
-
1
l.store "Title", "Titel"
-
1
l.store "Reorder", "Arranger"
-
1
l.store "Sort alphabetically", "Sortér alfabetisk"
-
-
# app/views/admin/categories/_form.html.erb
-
1
l.store "Keywords", ""
-
-
# app/views/admin/categories/destroy.html.erb
-
1
l.store "Are you sure you want to delete the category ", "Er du sikker på du vil slette kategorien: "
-
1
l.store "Delete this category", "Slet denne kategori"
-
1
l.store "Categories", "Kategorier"
-
-
# app/views/admin/categories/index.html.erb
-
1
l.store "New Category", ""
-
-
# app/views/admin/categories/new.html.erb
-
1
l.store "%s Category", ""
-
-
# app/views/admin/categories/reorder.html.erb
-
1
l.store "(Done)", "(Færdig)"
-
-
# app/views/admin/content/_attachment.html.erb
-
1
l.store "Remove", "Slet"
-
1
l.store "Currently this article has the following resources", "Artiklen har følgende ressourcer"
-
1
l.store "You can associate the following resources", "Du kan associere den med følgende ressourcer"
-
1
l.store "Really delete attachment", "Vil du virkelig slette vedhæftet fil"
-
1
l.store "Add Another Attachment", "Vedhæft en fil mere"
-
-
# app/views/admin/content/_drafts.html.erb
-
1
l.store "Drafts", "Kladder"
-
-
# app/views/admin/content/_form.html.erb
-
1
l.store "Publish settings", ""
-
1
l.store "Allow comments", "Tillad kommentarer"
-
1
l.store "Allow trackbacks", "Tillad Trackbacks"
-
1
l.store "Password:", "Kodeord"
-
1
l.store "Publish", "Udgiv"
-
1
l.store "Excerpt", ""
-
1
l.store "Excerpts are posts summaries that are shown on your blog homepage only but won’t appear on the post itself", ""
-
1
l.store "Uploads", "Filer"
-
1
l.store "Post settings", ""
-
1
l.store "Publish at", "Offentliggjort den"
-
1
l.store "Permalink", "Permanent link"
-
1
l.store "Article filter", "Artikelfilter"
-
1
l.store "Save as draft", ""
-
-
# app/views/admin/content/destroy.html.erb
-
1
l.store "Are you sure you want to delete this article", "Er du sikker på du vil slette denne artikel"
-
1
l.store "Delete this article", "Slet denne artikel"
-
1
l.store "Articles", "Artikler"
-
-
# app/views/admin/content/index.html.erb
-
1
l.store "New Article", ""
-
1
l.store "Search articles that contain ...", "Søg efter artikler der indeholder..."
-
1
l.store "Search", ""
-
1
l.store "Author", "Forfatter"
-
1
l.store "Date", "Dato"
-
1
l.store "Feedback", "Diskussion"
-
1
l.store "Filter", "Filtrer"
-
1
l.store "Manage articles", "Administrer artikler"
-
-
# app/views/admin/dashboard/_comments.html.erb
-
1
l.store "Latest Comments", "Seneste kommentarer"
-
1
l.store "No comments yet", "Der er ingen kommentarer endnu"
-
1
l.store "By %s on %s", "Fra %s på %s"
-
-
# app/views/admin/dashboard/_inbound.html.erb
-
1
l.store "Inbound links", "Indkomne links"
-
1
l.store "No one made a link to you yet", "Der er endnu ingen der har linket til dig"
-
1
l.store " made a link to you saying ", " har lavet et link til dig, og skrevet "
-
1
l.store "You have no internet connection", "Du har ingen internet forbindelse"
-
-
# app/views/admin/dashboard/_overview.html.erb
-
1
l.store "This place gives you a quick overview of what happens on your Typo blog and what you can do. Maybe will you want to %s, %s or %s.", "Dette sted giver dig en hurtig oversigt over, hvad der sker på din Typo blog, og hvad du kan gøre. Måske du ønsker at %s, %s eller %s."
-
1
l.store "update your profile or change your password", "opdatere din profil eller rette dit kodeord"
-
1
l.store "You can also do a bit of design, %s or %s.", "Du kan også tilpasse designet, %s eller %s."
-
1
l.store "change your blog presentation", "ændre din blogs udseende"
-
1
l.store "enable plugins", "tilføje plugins"
-
1
l.store "write a post", "skrive en artikel"
-
1
l.store "write a page", "skrive en side"
-
-
# app/views/admin/dashboard/_popular.html.erb
-
1
l.store "Most popular", "Mest populære"
-
1
l.store "Nothing to show yet", "Intet at vise endnu"
-
-
# app/views/admin/dashboard/_posts.html.erb
-
1
l.store "Latest Posts", ""
-
1
l.store "No posts yet, why don't you start and write one", "Der er ingen artikler endnu, du kan evt. starte med at skrive en"
-
-
# app/views/admin/dashboard/_typo_dev.html.erb
-
1
l.store "Latest news from the Typo development blog", ""
-
1
l.store "Oh no, nothing new", ""
-
-
# app/views/admin/dashboard/_welcome.html.erb
-
1
l.store "Welcome back, %s!", "Velkommen tilbage, %s!"
-
1
l.store "%d articles and %d comments were posted since your last connexion", ""
-
1
l.store "You're running Typo %s", "Du kører Typo version %s"
-
1
l.store "Total posts : %d", "Total artikler : %d"
-
1
l.store "Your posts : %d", "Dine artikler : %d"
-
1
l.store "Total comments : %d", "Total kommentarer : %d"
-
1
l.store "Spam comments : %d", "Spam kommentarer : %d"
-
-
# app/views/admin/feedback/_button.html.erb
-
1
l.store "Select action", ""
-
1
l.store "Delete Checked Items", ""
-
1
l.store "Delete all spam", ""
-
1
l.store "Mark Checked Items as Spam", ""
-
1
l.store "Mark Checked Items as Ham", ""
-
1
l.store "All comments", ""
-
1
l.store "Limit to ham", ""
-
1
l.store "Unapproved comments", ""
-
1
l.store "Limit to spam", "Indskrænk til spam"
-
-
# app/views/admin/feedback/_form.html.erb
-
1
l.store "Add a comment", ""
-
1
l.store "Url", "Url"
-
-
# app/views/admin/feedback/_spam.html.erb
-
1
l.store "This comment by <strong>%s</strong> was flagged as spam, %s?", ""
-
-
# app/views/admin/feedback/article.html.erb
-
1
l.store "Comments for %s", ""
-
1
l.store "Status", "Status"
-
1
l.store "Comment Author", ""
-
1
l.store "Comment", ""
-
-
# app/views/admin/feedback/edit.html.erb
-
1
l.store "Comments for", "Kommentarer for"
-
-
# app/views/admin/feedback/index.html.erb
-
1
l.store "Search Comments and Trackbacks that contain", ""
-
1
l.store "Article", "Artikel"
-
-
# app/views/admin/pages/_form.html.erb
-
1
l.store "Online", "Online"
-
1
l.store "Page settings", ""
-
1
l.store "Permanent link", ""
-
-
# app/views/admin/pages/destroy.html.erb
-
1
l.store "Pages", "Sider"
-
1
l.store "Are you sure you want to delete the page", "Er du sikker på du vil slette denne side"
-
1
l.store "Delete this page", "Slet denne side"
-
-
# app/views/admin/pages/index.html.erb
-
1
l.store "New Page", ""
-
1
l.store "Manage pages", "Administrer sider"
-
-
# app/views/admin/profiles/index.html.erb
-
1
l.store "Your profile", "Din profil"
-
-
# app/views/admin/resources/_mime_edit.html.erb
-
1
l.store "Content Type", "Indholdstype (Content Type)"
-
-
# app/views/admin/resources/_pages.html.erb
-
1
l.store "Previous page", "Forrige side"
-
1
l.store "Next page", "Næste side"
-
-
# app/views/admin/resources/_upload.html.erb
-
1
l.store "Upload a File to your Site", "Upload en fil til din side"
-
1
l.store "File", ""
-
1
l.store "Upload", "Upload"
-
-
# app/views/admin/resources/destroy.html.erb
-
1
l.store "Are you sure you want to delete this file", "Er du sikker på du vil slette denne fil"
-
1
l.store "Delete this file from the webserver?", "Slet denne fil fra webserveren?"
-
1
l.store "File Uploads", "Fil Uploads"
-
-
# app/views/admin/resources/images.html.erb
-
1
l.store "Thumbnail", ""
-
1
l.store "File Size", "Filstørrelse"
-
1
l.store "Images", ""
-
1
l.store "right-click for link", "højreklik for link"
-
-
# app/views/admin/resources/index.html.erb
-
1
l.store "Filename", "Filnavn"
-
-
# app/views/admin/settings/_submit.html.erb
-
1
l.store "Update settings", ""
-
-
# app/views/admin/settings/feedback.html.erb
-
1
l.store "Enable comments by default", "Aktiver kommentarer som standard"
-
1
l.store "Enable Trackbacks by default", "Aktiver Trackbacks som standard"
-
1
l.store "Enable feedback moderation", "Aktiver feedback moderation"
-
1
l.store "You can enable site wide feeback moderation. If you do so, no comment or trackback will appear on your blog unless you validate it", ""
-
1
l.store "Comments filter", "Kommentarfilter"
-
1
l.store "Enable gravatars", "Vis gravatars"
-
1
l.store "Show your email address", "Vis din e-mail addresse"
-
1
l.store "Notifications", ""
-
1
l.store "Typo can notify you when new articles or comments are posted", "Typo kan give dig besked, når nye artikler eller kommentarer er indsendt"
-
1
l.store "Source Email", "Afsender e-mail"
-
1
l.store "Email address used by Typo to send notifications", "E-mail adresse der bruges af Typo til at sende meddelelser"
-
1
l.store "Enabling spam protection will make typo compare the IP address of posters as well as the contents of their posts against local and remote blacklists. Good defense against spam bots", "Enabling spam protection will make typo compare the IP address of posters as well as the contents of their posts against local and remote blacklists. Good defense against spam bots" #Need translate
-
1
l.store "Enable spam protection", "Aktiver spam beskyttelse"
-
1
l.store "Akismet Key", "Akismet nøgle"
-
1
l.store "Typo can (optionally) use the %s spam-filtering service. You need to register with Akismet and receive an API key before you can use their service. If you have an Akismet key, enter it here", "Typo can (optionally) use the %s spam-filtering service. You need to register with Akismet and receive an API key before you can use their service. If you have an Akismet key, enter it here" #Need translate
-
1
l.store "Disable trackbacks site-wide", ""
-
1
l.store "This setting allows you to disable trackbacks for every article in your blog. It won't remove existing trackbacks, but it will prevent any further attempt to add a trackback anywhere on your blog.", "Denne indstilling giver dig mulighed for at deaktivere Trackbacks for hver artikel i din blog. Det vil ikke fjerne eksisterende Trackbacks, men det vil forhindre yderligere forsøg på at tilføje Trackbacks overalt på din blog."
-
1
l.store "Disable comments after", "Deaktiver kommentarer efter"
-
1
l.store "days", "dage"
-
1
l.store "Set to 0 to never disable comments", "Sæt til 0 for at aldrig deaktivere kommentarer"
-
1
l.store "Max Links", "Max Links"
-
1
l.store "Typo will automatically reject comments and trackbacks which contain over a certain amount of links in them", "Typo will automatically reject comments and trackbacks which contain over a certain amount of links in them" #Need translate
-
1
l.store "Set to 0 to never reject comments", "Sæt til 0 for at aldrig forkaste kommentarer"
-
1
l.store "Feedback settings", ""
-
-
# app/views/admin/settings/index.html.erb
-
1
l.store "Your blog", "Din Blog"
-
1
l.store "Blog name", "Blog titel"
-
1
l.store "Blog subtitle", "Blog undertitel"
-
1
l.store "Blog URL", "Blogadresse"
-
1
l.store "Language", "Sprog"
-
1
l.store "Allow users to register", ""
-
1
l.store "You can allow users to register to your blog. By default, they will register as contributors, an unpriviledged account level which grant them no rights but own a profile on the site. If you don't want users to register, you can thus add them by yourself in the users part of this admin.", ""
-
1
l.store "Items to display in admin lists", ""
-
1
l.store "Publishing options", ""
-
1
l.store "Display", "Vis"
-
1
l.store "articles on my homepage by default", "artikler på min hjemmeside som standard"
-
1
l.store "articles in my news feed by default", "artikler i min nyhedsfeed som standard"
-
1
l.store "Show full article on feed", "Vis hele artiklen i min feed"
-
1
l.store "Feedburner ID", ""
-
1
l.store "General settings", "Generelle indstillinger"
-
1
l.store "You can use your Google Feedburner account instead of Typo feed URL. To enable this, fill this form with your Feedburner ID.", ""
-
-
# app/views/admin/settings/seo.html.erb
-
1
l.store "Search Engine Optimisation", ""
-
1
l.store "Format of permalink", ""
-
1
l.store "Google Analytics", ""
-
1
l.store "Google verification link", ""
-
1
l.store "Meta description", ""
-
1
l.store "Meta keywords", ""
-
1
l.store "Use RSS description", ""
-
1
l.store "Index categories", ""
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every category page, removing them from search engines and preventing duplicate content issues", ""
-
1
l.store "Index tags", ""
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every tags page, removing them from search engines and preventing duplicate content issues", ""
-
1
l.store "Robots.txt", ""
-
1
l.store "You robots.txt file is not writeable. Typo won't be able to write it", ""
-
1
l.store "Search Engine Optimization", ""
-
1
l.store "This will display", ""
-
1
l.store "at the bottom of each of your post in the RSS feed", ""
-
-
# app/views/admin/settings/update_database.html.erb
-
1
l.store "Information", "Information"
-
1
l.store "Current database version", "Nuværende database version"
-
1
l.store "New database version", "Ny database version"
-
1
l.store "Your database supports migrations", "Din database understøtter migrations"
-
1
l.store "Needed migrations", "Manglende migrations"
-
1
l.store "You are up to date!", "Du er up to date!"
-
1
l.store "Update database now", "Updatér database nu"
-
1
l.store "may take a moment", "Det varer et øjeblik"
-
1
l.store "Database migration", "Database migration"
-
1
l.store "yes", "ja"
-
1
l.store "no", "nej"
-
-
# app/views/admin/settings/write.html.erb
-
1
l.store "Send trackbacks", "Send trackbacks"
-
1
l.store "When publishing articles, Typo can send trackbacks to websites that you link to. This should be disabled for private blogs as it will leak non-public information to sites that you're discussing. For public blogs, there's no real point in disabling this.", "Når du udgiver artikler kan Typo sende trackbacks til de hjemmesider du linker til. Dette bør slåes fra for private blogs da det ellers kan lække privat information til hjemmesider du diskuterer. For offentlige blogs, er der ingen reel mening i at deaktivere dette."
-
1
l.store "URLs to ping automatically", "Webadresser der automatisk pinges"
-
1
l.store "Latitude, Longitude", "Breddegrad, længdegrad"
-
1
l.store "your lattitude and longitude", "din breddegrad og længdegrad"
-
1
l.store "exemple", "for eksempel"
-
1
l.store "Write", "Skriv"
-
-
# app/views/admin/sidebar/_availables.html.erb
-
1
l.store "You have no plugins installed", "Du har ikke installeret nogen plugins"
-
-
# app/views/admin/sidebar/_publish.html.erb
-
1
l.store "Changes published", "Ændringer er udgivet"
-
-
# app/views/admin/sidebar/_target.html.erb
-
1
l.store "Drag some plugins here to fill your sidebar", "Træk plugins herover for at fylde din sidebar"
-
-
# app/views/admin/sidebar/index.html.erb
-
1
l.store "Drag and drop to change the sidebar items displayed on this blog. To remove items from the sidebar just click remove Changes are saved immediately, but not activated until you click the 'Publish' button", "Træk og slip for at ændre indholdsoversigten der vises på denne blog. Du kan fjerne elementer fra indholdsoversigten bare ved at klikke fjern. Ændringer gemmes med det samme, men ikke aktiveret, før du klikker på 'Offentliggør' knappen."
-
1
l.store "Available Items", "Tilgængelige objekter"
-
1
l.store "Active Sidebar items", "Aktive sidebar objekter"
-
1
l.store "Get more plugins", ""
-
1
l.store "Sidebar", ""
-
1
l.store "Publish changes", "Udgiv ændringer"
-
-
# app/views/admin/tags/_form.html.erb
-
1
l.store "Display name", "Vis navn"
-
-
# app/views/admin/tags/destroy.html.erb
-
1
l.store "Are you sure you want to delete the tag", ""
-
1
l.store "Delete this tag", ""
-
-
# app/views/admin/tags/edit.html.erb
-
1
l.store "Editing ", ""
-
1
l.store "Back to tags list", ""
-
-
# app/views/admin/tags/index.html.erb
-
1
l.store "Display Name", ""
-
1
l.store "Manage tags", ""
-
-
# app/views/admin/themes/catalogue.html.erb
-
1
l.store "Sorry the theme catalogue is not available", ""
-
1
l.store "Theme catalogue", ""
-
-
# app/views/admin/themes/editor.html.erb
-
1
l.store "Theme editor", ""
-
-
# app/views/admin/themes/index.html.erb
-
1
l.store "Active theme", "Aktiv tema"
-
1
l.store "Get more themes", ""
-
1
l.store "You can download third party themes from officially supported %s ", ""
-
1
l.store "Typogarden", ""
-
1
l.store "To install a theme you just need to upload the theme folder into your themes directory. Once a theme is uploaded, you should see it on this page.", ""
-
1
l.store "Choose a theme", "Vælg et tema"
-
-
# app/views/admin/users/_form.html.erb
-
1
l.store "Account settings", ""
-
1
l.store "Password confirmation", "Gentag kodeord"
-
1
l.store "Profile", "Profil"
-
1
l.store "User's status", ""
-
1
l.store "Active", ""
-
1
l.store "Inactive", ""
-
1
l.store "Profile Settings", ""
-
1
l.store "Firstname", "Fornavn"
-
1
l.store "Lastname", "Efternavn"
-
1
l.store "Nickname", "Kælenavn"
-
1
l.store "Editor", ""
-
1
l.store "Use simple editor", ""
-
1
l.store "Use visual rich editor", ""
-
1
l.store "Send notification messages via email", "Send meddelelser via e-mail"
-
1
l.store "Send notification messages when new articles are posted", "Send meddelelser når ny artikler bliver udgivet"
-
1
l.store "Send notification messages when comments are posted", "Send meddelelser når der er nye kommentarer"
-
1
l.store "Contact Options", "Kontakt information"
-
1
l.store "Your site", "Din hjemmeside"
-
1
l.store "display url on public profile", "Vis hjemmeside på din profil"
-
1
l.store "Your MSN", "Dit MSN ID"
-
1
l.store "display MSN ID on public profile", "Vis dit MSN ID på din profil"
-
1
l.store "Your Yahoo ID", "Dit Yahoo ID"
-
1
l.store "display Yahoo! ID on public profile", "Vis dit Yahoo ID på din profil"
-
1
l.store "Your Jabber ID", "Dit Jabber ID"
-
1
l.store "display Jabber ID on public profile", "Vis dit Jabber ID på din profil"
-
1
l.store "Your AIM id", "Dit AIM ID"
-
1
l.store "display AIM ID on public profile", "Vis dit AIM ID på din profil"
-
1
l.store "Your Twitter username", "Dit Twitter brugernavn"
-
1
l.store "display twitter on public profile", "Vis twitter på din profil"
-
1
l.store "Tell us more about you", "Fortæl lidt mere om dig"
-
-
# app/views/admin/users/destroy.html.erb
-
1
l.store "Really delete user", "Vil du virkelig slette brugeren"
-
1
l.store "Yes", ""
-
1
l.store "Users", ""
-
-
# app/views/admin/users/edit.html.erb
-
1
l.store "Edit User", "Rediger bruger"
-
-
# app/views/admin/users/index.html.erb
-
1
l.store "New User", "Ny bruger"
-
1
l.store "Comments", "Kommentarer"
-
1
l.store "State", ""
-
1
l.store "%s user", ""
-
-
# app/views/admin/users/new.html.erb
-
1
l.store "Add User", ""
-
-
# app/views/articles/_article.html.erb
-
1
l.store "Posted by", "Skrevet af"
-
1
l.store "Continue reading", ""
-
-
# app/views/articles/_comment.html.erb
-
1
l.store "said", "sagde"
-
1
l.store "This comment has been flagged for moderator approval. It won't appear on this blog until the author approves it", "Denne kommentar er blevet markeret som krævende godkendelse. Den vil ikke blive vist før forfatteren godkender den."
-
-
# app/views/articles/_comment_box.html.erb
-
1
l.store "Your name", "Dit Navn"
-
1
l.store "Your email", "Din email"
-
1
l.store "Your message", "Din besked"
-
1
l.store "Comment Markup Help", "Hjælp med kommentar markup"
-
1
l.store "Preview comment", "Vis kommentar eksempel"
-
1
l.store "leave url/email", ""
-
-
# app/views/articles/_comment_failed.html.erb
-
1
l.store "Oops, something wrong happened, the comment could not be saved", ""
-
-
# app/views/articles/_trackback.html.erb
-
1
l.store "From", "Fra"
-
-
# app/views/articles/archives.html.erb
-
1
l.store "No articles found", "Fandt ingen artikler"
-
1
l.store "posted in", ""
-
-
# app/views/articles/comment_preview.html.erb
-
1
l.store "is about to say", "vil gerne sige"
-
-
# app/views/articles/groupings.html.erb
-
1
l.store "There are", "Der er"
-
-
# app/views/articles/read.html.erb
-
1
l.store "Leave a response", "Skriv en kommentar"
-
1
l.store "Trackbacks", ""
-
1
l.store "Use the following link to trackback from your own site", "Brug følgende link til lave trackback fra din egen side"
-
1
l.store "RSS feed for this post", "RSS Feed for denne artikel"
-
1
l.store "trackback uri", "Trackback URI"
-
1
l.store "Comments are disabled", "Kommentarer er deaktiveret"
-
-
# app/views/authors/show.html.erb
-
1
l.store "Web site:", ""
-
1
l.store "MSN:", ""
-
1
l.store "Yahoo:", ""
-
1
l.store "Jabber:", ""
-
1
l.store "AIM:", ""
-
1
l.store "Twitter:", ""
-
1
l.store "About %s", ""
-
1
l.store "This author has not published any article yet", ""
-
-
# app/views/comments/show.html.erb
-
1
l.store "This comment has been flagged for moderator approval.", ""
-
-
# app/views/layouts/administration.html.erb
-
1
l.store "%s »", ""
-
1
l.store "is proudly powered by", ""
-
1
l.store "Dashboard", ""
-
-
# app/views/setup/index.html.erb
-
1
l.store "Welcome", ""
-
1
l.store "Welcome to your %s blog setup. Just fill in your blog title and your email, and Typo will take care of everything else", ""
-
-
# app/views/shared/_confirm.html.erb
-
1
l.store "Congratulation!", ""
-
1
l.store "You have successfully signed up", ""
-
1
l.store "<strong>Login:</strong> %s", ""
-
1
l.store "<strong>Password:</strong> %s", ""
-
1
l.store "Don't lose the mail sent at %s or you won't be able to login anymore", ""
-
1
l.store "Proceed to %s", ""
-
1
l.store "admin", ""
-
-
# app/views/shared/_search.html.erb
-
1
l.store "Live Search", ""
-
-
# test/mocks/themes/typographic/layouts/default.html.erb
-
1
l.store "Powered by %s", ""
-
1
l.store "Designed by %s ", ""
-
-
# test/mocks/themes/typographic/views/articles/_article.html.erb
-
1
l.store "Continue reading...", ""
-
1
l.store "This entry was posted on %s", ""
-
1
l.store "and %s", ""
-
1
l.store "You can follow any response to this entry through the %s", ""
-
1
l.store "Atom feed", ""
-
1
l.store "You can leave a %s", ""
-
1
l.store "or a %s from your own site", ""
-
1
l.store "Read full article", ""
-
1
l.store "comment", ""
-
1
l.store "trackback", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment.html.erb
-
1
l.store "later", "senere"
-
-
# test/mocks/themes/typographic/views/articles/_comment_form.html.erb
-
1
l.store "Leave a comment", "Skriv en kommentar"
-
1
l.store "Name %s", "Navn %s"
-
1
l.store "enabled", "aktiveret"
-
1
l.store "never displayed", ""
-
1
l.store "Website", ""
-
1
l.store "Textile enabled", ""
-
1
l.store "Markdown enabled", ""
-
1
l.store "required", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment_list.html.erb
-
1
l.store "No comments", ""
-
-
# test/mocks/themes/typographic/views/shared/_search.html.erb
-
1
l.store "Searching", ""
-
-
# themes/dirtylicious/layouts/default.html.erb
-
1
l.store "Home", ""
-
1
l.store "About", ""
-
1
l.store "Designed by %s ported to typo by %s ", ""
-
-
# themes/scribbish/layouts/default.html.erb
-
1
l.store "styled with %s", ""
-
-
# themes/scribbish/views/articles/_article.html.erb
-
1
l.store "Meta", ""
-
1
l.store "permalink", ""
-
-
# themes/true-blue-3/helpers/theme_helper.rb
-
1
l.store "You are here: ", ""
-
1
l.store "%d comment", ""
-
-
# themes/true-blue-3/views/articles/_article.html.erb
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M", ""
-
-
# themes/true-blue-3/views/articles/_comment.html.erb
-
1
l.store "By", ""
-
1
l.store "later:", ""
-
-
# themes/true-blue-3/views/articles/_comment_form.html.erb
-
1
l.store "Email address", ""
-
1
l.store "Your website", ""
-
-
# themes/true-blue-3/views/articles/read.html.erb
-
1
l.store "If you liked this article you can %s", ""
-
1
l.store "add me to Twitter", ""
-
1
l.store "Trackbacks for", "Trackbacks for"
-
-
# themes/true-blue-3/views/articles/search.html.erb
-
1
l.store "Search results for:", ""
-
-
# themes/true-blue-3/views/categories/index.html.erb
-
1
l.store "Read all articles in %s", ""
-
-
# themes/true-blue-3/views/categories/show.html.erb
-
1
l.store "Previous", ""
-
1
l.store "Next", ""
-
-
# vendor/plugins/archives_sidebar/views/content.rhtml
-
1
l.store "Archives", "Arkiv"
-
-
# vendor/plugins/authors_sidebar/views/content.rhtml
-
1
l.store "Authors", ""
-
-
# vendor/plugins/xml_sidebar/views/content.rhtml
-
1
l.store "Syndicate", "Syndikat"
-
1
l.store "Category %s", ""
-
1
l.store "Tag %s", ""
-
-
# Obsolete translations
-
1
l.store "%d Categories", ["Kategori", "%d kategorier"]
-
1
l.store "%d Comments", "%d Kommentarer"
-
1
l.store "%d Users", ["Bruger", "%d Brugere"]
-
1
l.store "AIM Presence", "AIM Presence"
-
1
l.store "AIM Status", "AIM Status"
-
1
l.store "Action", "Aktion"
-
1
l.store "Activate", "Aktiver"
-
1
l.store "Add MetaData", "Tilføj MetaData"
-
1
l.store "Add category", "Tilføj kategori"
-
1
l.store "Add new user", "Tilføj ny user"
-
1
l.store "Add pattern", "Tilføj mønster"
-
1
l.store "Allow non-ajax comments", "Tillad ikke-ajax kommentarer"
-
1
l.store "Are you sure you want to delete this filter", "Er du sikker på du vil slette dette filter"
-
1
l.store "Are you sure you want to delete this item?", "Er du sikker på du vil slette dette mønster?"
-
1
l.store "Article Attachments", "Artikel vedhæftninger"
-
1
l.store "Article Body", "Artikel"
-
1
l.store "Article Content", "Artikel indhold"
-
1
l.store "Article Options", "Artikel egenskaber"
-
1
l.store "Articles in", "Artikler i"
-
1
l.store "Attachments", "Vedhæftet"
-
1
l.store "Back to the blog", "Tilbage til Bloggen"
-
1
l.store "Blacklist", "Blacklist"
-
1
l.store "Blacklist Patterns", "Blacklist mønstre"
-
1
l.store "Blog settings", "Blog indstillinger"
-
1
l.store "Body", "Tekst"
-
1
l.store "Cache", "Cache"
-
1
l.store "Category title", "Kategorititel"
-
1
l.store "Choose password", "Kodeord"
-
1
l.store "Comments and Trackbacks for", "Kommentarer og trackbacks for"
-
1
l.store "Confirm password", "Gentag kodeord"
-
1
l.store "Content", "Indhold"
-
1
l.store "Continue reading »", "Læs videre »"
-
1
l.store "Copyright Information", "Copyright information"
-
1
l.store "Create new Blacklist", "Opret ny blacklist"
-
1
l.store "Create new category", "Opret ny kategori"
-
1
l.store "Create new page", "Opret ny side"
-
1
l.store "Create new text filter", "Opret nyt tekstfilter"
-
1
l.store "Creating comment", "Opret kommentar"
-
1
l.store "Creating text filter", "Oprettelse af tekstfilter"
-
1
l.store "Creating trackback", "Opretter trackback"
-
1
l.store "Creating user", "Opretter bruger"
-
1
l.store "Currently this article is listed in following categories", "Artiklen er i følgende kategorier"
-
1
l.store "Customize Sidebar", "Personliggør sidebar"
-
1
l.store "Delete this filter", "Slet dette filter"
-
1
l.store "Design", "Design"
-
1
l.store "Desired login", "Ønsket brugernavn"
-
1
l.store "Discuss", "Diskussion"
-
1
l.store "Do you want to go to your blog?", "Vil du fortsætte til din blog?"
-
1
l.store "Duration", "Varighed"
-
1
l.store "Edit Article", "Rediger artikel"
-
1
l.store "Edit MetaData", "Rediger MetaData"
-
1
l.store "Edit this article", "Rediger denne artikkel"
-
1
l.store "Edit this category", "Rediger denne kategori"
-
1
l.store "Edit this filter", "Rediger dette filter"
-
1
l.store "Edit this page", "Rediger denne side"
-
1
l.store "Edit this trackback", "Rediger dette trackback"
-
1
l.store "Editing User", "Redigerer bruger"
-
1
l.store "Editing category", "Rediger kategori"
-
1
l.store "Editing comment", "Rediger kommentar"
-
1
l.store "Editing page", "Rediger side"
-
1
l.store "Editing pattern", "Rediger mønster"
-
1
l.store "Editing textfilter", "Redigerer tekstfilter"
-
1
l.store "Editing trackback", "Redigerer trackback"
-
1
l.store "Empty Fragment Cache", "Tøm Fragment Cache"
-
1
l.store "Explicit", "Explicit"
-
1
l.store "Extended Content", "Udvidet indhold"
-
1
l.store "Feedback Search", "Søg i feedback"
-
1
l.store "Filters", "Filtre"
-
1
l.store "General Settings", "Generelle Indstillinger"
-
1
l.store "IP", "IP-adresse"
-
1
l.store "Jabber", "Jabber"
-
1
l.store "Jabber account", "Jabber konto"
-
1
l.store "Jabber account to use when sending Jabber notifications", "Jabber konto til når du sender Jabber beskeder"
-
1
l.store "Jabber password", "Jabber kodeord"
-
1
l.store "Key Words", "Key Words"
-
1
l.store "Last updated", "Sidst opdateret den"
-
1
l.store "Latest posts", "Seneste artikler"
-
1
l.store "Limit to unconfirmed", "Indskrænk til ikke bekræftet"
-
1
l.store "Limit to unconfirmed spam", "Indskrænk til ikke bekræftet Spam"
-
1
l.store "Location", "Adresse"
-
1
l.store "Logoff", "Log ud"
-
1
l.store "Macro Filter Help", "Makro filter hjælp"
-
1
l.store "Macros", "Makroer"
-
1
l.store "Manage", "Administrer"
-
1
l.store "Manage Articles", "Administrer artikler"
-
1
l.store "Manage Categories", "Administrer kategorier"
-
1
l.store "Manage Pages", "Administrer sider"
-
1
l.store "Manage Resources", "Administrer ressourcer"
-
1
l.store "Manage Text Filters", "Administrer text filtre"
-
1
l.store "Markup", "Markup"
-
1
l.store "Markup type", "Markup type"
-
1
l.store "MetaData", "MetaData"
-
1
l.store "Name (required)", "Navn (skal udfyldes)"
-
1
l.store "Not published by Apple", "Not published by Apple" #Need translate
-
1
l.store "Notification", "Beskeder"
-
1
l.store "Notified", "Besked sendt"
-
1
l.store "Notify on new articles", "Send besked ved ny artikel"
-
1
l.store "Notify on new comments", "Send besked ved ny kommentar"
-
1
l.store "Notify via email", "Send besked via e-mail"
-
1
l.store "Number of Articles", "Antal artikler"
-
1
l.store "Number of Comments", "antal kommentarer"
-
1
l.store "Offline", "Offline"
-
1
l.store "Older posts", "Ældre artikler"
-
1
l.store "Oops, something wrong happened. Have you filled out message and name?", "Hov der gik noget galt, har du udfyldt besked og dit navn?"
-
1
l.store "Optional Name", "Optional Name" #Need translate
-
1
l.store "Page", "Side"
-
1
l.store "Page Body", "Sideindhold"
-
1
l.store "Page Options", "Side instillinger"
-
1
l.store "Parameters", "Parametre"
-
1
l.store "Pattern", "Mønster"
-
1
l.store "Personal information", "Personlig information"
-
1
l.store "Pictures from", "Bileder fra"
-
1
l.store "Post title", "Titel på artikel"
-
1
l.store "Post-processing filters", "Efterbehandlingsfiltre"
-
1
l.store "Posted date", "Udgivet den"
-
1
l.store "Posted on", "Offentliggjort den"
-
1
l.store "Posts", "Artikler"
-
1
l.store "Preview Article", "Vis artikkel eksempel"
-
1
l.store "Read", "Læs"
-
1
l.store "Read more", "Læs mere"
-
1
l.store "Rebuild cached HTML", "Genopbyg cached HTML"
-
1
l.store "Recent comments", "Nyeste kommentarer"
-
1
l.store "Recent trackbacks", "Nyeste trackbacks"
-
1
l.store "Regex", "Regulært udtryk"
-
1
l.store "Remove iTunes Metadata", "Slet iTunes metadata"
-
1
l.store "Resource MetaData", "Ressource MetaData"
-
1
l.store "Resource Settings", "Indstillinger for ressourcer"
-
1
l.store "Save Settings", "Gem instillinger"
-
1
l.store "Says", "Sagde"
-
1
l.store "See help text for this filter", "Se hjælpeteksten til dette filter"
-
1
l.store "Set iTunes metadata for this enclosure", "Sæt iTunes MetaData for denne fil"
-
1
l.store "Setting for channel", "Instillinger for kanal"
-
1
l.store "Settings", "Indstillinger"
-
1
l.store "Show Help", "Vis hjælp"
-
1
l.store "Show this article", "Vis denne artikel"
-
1
l.store "Show this category", "Vis kategori"
-
1
l.store "Show this comment", "Vis denne kommentar"
-
1
l.store "Show this page", "Vis denne side"
-
1
l.store "Show this pattern", "Vis mønster"
-
1
l.store "Show this user", "Vis denne bruger"
-
1
l.store "Spam Protection", "Spambeskyttelse"
-
1
l.store "Spam protection", "Spam beskyttelse"
-
1
l.store "Statistics", "Statistik"
-
1
l.store "String", "Tekststreng"
-
1
l.store "Subtitle", "Undertitel"
-
1
l.store "Summary", "Resumé"
-
1
l.store "System information", "System information"
-
1
l.store "Text Filter Details", "Tekstfilter detaljer"
-
1
l.store "Text Filters", "Tekst Filtre"
-
1
l.store "Textfilter", "Textfilter"
-
1
l.store "The below settings act as defaults when you choose to publish an enclosure with iTunes metadata", "The below settings act as defaults when you choose to publish an enclosure with iTunes metadata" #Need translate
-
1
l.store "There are %d entries in the cache", "Der er %d objekter i cachen"
-
1
l.store "Things you can do", "Du kan udføre følgende ..."
-
1
l.store "This option let you choose between the simple admin interface or the complete one, displaying much more options and therefore more complicated to use. For advanced users only!","This option let you choose between the simple admin interface or the complete one, displaying much more options and therefore more complicated to use. For advanced users only!" #Need translate
-
1
l.store "Toggle Extended Content", "Slå udvidet indhold til/fra"
-
1
l.store "Type", "Type"
-
1
l.store "Typo admin", "Typo administrator"
-
1
l.store "Upload a new File", "Upload en ny fil"
-
1
l.store "Upload a new Resource", "Upload en ny ressource"
-
1
l.store "Uploaded", "Uploaded"
-
1
l.store "User's articles", "Brugerens artikler"
-
1
l.store "View article on your blog", "Vis atikel på din blog"
-
1
l.store "View comment on your blog", "Vis kommentar på din blog"
-
1
l.store "View page on your blog", "Vis denne side på din blog"
-
1
l.store "Which settings group would you like to edit", "Hvilke indstillinger vil du gerne redigere"
-
1
l.store "Write a Page", "Skriv en side"
-
1
l.store "Write an Article", "Skriv en artikkel"
-
1
l.store "XML Syndication", "XML Syndikat"
-
1
l.store "You are now logged out of the system", "Du er nu logget af systemet"
-
1
l.store "You can add it to the following categories", "Du kan tilføje følgende kategorier"
-
1
l.store "You can enable site wide feedback moderation. If you do so, no comment or trackback will appear on your blog unless you validate it", "Du kan slå feedback moderation til for hele bloggen. Hvis du gør dette kommer kommentarer og trackbacks først frem når du har godkendt dem"
-
1
l.store "You can optionally disable non-Ajax comments. Typo will always use Ajax for comment submission if Javascript is enabled, so non-Ajax comments are either from spammers or users without Javascript.", "You can optionally disable non-Ajax comments. Typo will always use Ajax for comment submission if Javascript is enabled, so non-Ajax comments are either from spammers or users without Javascript." #Need translate
-
1
l.store "add new", "tilføj ny"
-
1
l.store "by", "af"
-
1
l.store "log out", "log ud"
-
1
l.store "on", "på"
-
1
l.store "published", "udgivet"
-
1
l.store "seperate with spaces", "Adskil med mellemrum"
-
1
l.store "via email", "via e-mail"
-
1
l.store "with %s Famfamfam iconset %s", "med %s Famfamfam ikoner %s"
-
end
-
# coding: utf-8
-
1
Localization.define("de_DE") do |l|
-
-
# app/controllers/accounts_controller.rb
-
1
l.store "Login successful", ""
-
1
l.store "Login unsuccessful", ""
-
1
l.store "An email has been successfully sent to your address with your new password", ""
-
1
l.store "Oops, something wrong just happened", ""
-
1
l.store "Successfully logged out", ""
-
1
l.store "login", ""
-
1
l.store "signup", ""
-
1
l.store "Recover your password", ""
-
-
# app/controllers/admin/categories_controller.rb
-
1
l.store "Category was successfully saved.", ""
-
1
l.store "Category could not be saved.", ""
-
-
# app/controllers/admin/content_controller.rb
-
1
l.store "Error, you are not allowed to perform this action", ""
-
1
l.store "Preview", ""
-
1
l.store "Article was successfully created", ""
-
1
l.store "Article was successfully updated.", ""
-
-
# app/controllers/admin/feedback_controller.rb
-
1
l.store "Deleted", ""
-
1
l.store "Not found", ""
-
1
l.store "Deleted %d item(s)", ""
-
1
l.store "Marked %d item(s) as Ham", ""
-
1
l.store "Marked %d item(s) as Spam", ""
-
1
l.store "Confirmed classification of %s item(s)", ""
-
1
l.store "Not implemented", ""
-
1
l.store "All spam have been deleted", ""
-
1
l.store "Comment was successfully created.", ""
-
1
l.store "Comment was successfully updated.", ""
-
-
# app/controllers/admin/pages_controller.rb
-
1
l.store "Page was successfully created.", ""
-
1
l.store "Page was successfully updated.", ""
-
-
# app/controllers/admin/profiles_controller.rb
-
1
l.store "User was successfully updated.", ""
-
-
# app/controllers/admin/resources_controller.rb
-
1
l.store "Error occurred while updating Content Type.", ""
-
1
l.store "complete", ""
-
1
l.store "File uploaded: ", ""
-
1
l.store "Unable to upload", ""
-
1
l.store "Metadata was successfully updated.", ""
-
1
l.store "Not all metadata was defined correctly.", ""
-
1
l.store "Content Type was successfully updated.", ""
-
-
# app/controllers/admin/settings_controller.rb
-
1
l.store "Please review and save the settings before continuing", ""
-
1
l.store "config updated.", ""
-
-
# app/controllers/admin/sidebar_controller.rb
-
1
l.store "It seems something went wrong. Maybe some of your sidebars are actually missing and you should either reinstall them or remove them manually", ""
-
-
# app/controllers/admin/tags_controller.rb
-
1
l.store "Tag was successfully updated.", ""
-
-
# app/controllers/admin/themes_controller.rb
-
1
l.store "Theme changed successfully", ""
-
1
l.store "You are not authorized to open this file", ""
-
1
l.store "File saved successfully", ""
-
1
l.store "Unable to write file", ""
-
-
# app/controllers/admin/users_controller.rb
-
1
l.store "User was successfully created.", ""
-
-
# app/controllers/application_controller.rb
-
1
l.store "Localization.rtl", ""
-
-
# app/controllers/articles_controller.rb
-
1
l.store "No posts found...", ""
-
1
l.store "Archives for", ""
-
1
l.store "Archives for ", ""
-
1
l.store ", Articles for ", ""
-
-
# app/controllers/grouping_controller.rb
-
1
l.store "page", ""
-
1
l.store "everything about", ""
-
-
# app/helpers/admin/base_helper.rb
-
1
l.store "Cancel", "Abbrechen"
-
1
l.store "Store", ""
-
1
l.store "Delete", "Löschen"
-
1
l.store "delete", ""
-
1
l.store "Delete content", ""
-
1
l.store "Are you sure?", ""
-
1
l.store "Please select", ""
-
1
l.store "There are no %s yet. Why don't you start and create one?", ""
-
1
l.store "or", "oder"
-
1
l.store "Save", "Speichern"
-
1
l.store "Edit", "Bearbeiten"
-
1
l.store "Show", ""
-
1
l.store "Published", "Veröffentlicht"
-
1
l.store "Unpublished", ""
-
1
l.store "Show help on Typo macros", ""
-
1
l.store "Back to overview", "Zurück zur Übersicht"
-
1
l.store "Name", "Name"
-
1
l.store "Description", "Beschreibung"
-
1
l.store "Tag", ""
-
-
# app/helpers/admin/categories_helper.rb
-
1
l.store "no articles", ""
-
1
l.store "1 article", ""
-
1
l.store "%d articles", ""
-
-
# app/helpers/admin/content_helper.rb
-
1
l.store "Destroy this draft", ""
-
-
# app/helpers/admin/feedback_helper.rb
-
1
l.store "Show conversation", ""
-
1
l.store "Flag as %s", ""
-
-
# app/helpers/application_helper.rb
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M:%%S GMT", ""
-
1
l.store "%%d. %%b", ""
-
1
l.store "%d comments", ""
-
1
l.store "no comments", "keine Kommentare"
-
1
l.store "1 comment", ""
-
1
l.store "no trackbacks", "keine Trackbacks"
-
1
l.store "1 trackback", ""
-
1
l.store "%d trackbacks", ""
-
-
# app/helpers/content_helper.rb
-
1
l.store "Posted in", ""
-
1
l.store "Tags", "Tags"
-
1
l.store "no posts", ""
-
1
l.store "1 post", ""
-
1
l.store "%d posts", ""
-
-
# app/models/article.rb
-
1
l.store "Original article writen by", ""
-
1
l.store "and published on", ""
-
1
l.store "direct link to this article", ""
-
1
l.store "If you are reading this article elsewhere than", ""
-
1
l.store "it has been illegally reproduced and without proper authorization", ""
-
-
# app/models/blog.rb
-
1
l.store "You need a permalink format with an identifier : %%month%%, %%year%%, %%day%%, %%title%%", ""
-
1
l.store "Can't end in .rss or .atom. These are reserved to be used for feed URLs", ""
-
-
# app/models/feedback/states.rb
-
1
l.store "Unclassified", ""
-
1
l.store "Just Presumed Ham", ""
-
1
l.store "Ham?", ""
-
1
l.store "Just Marked As Ham", ""
-
1
l.store "Ham", ""
-
1
l.store "Spam?", ""
-
1
l.store "Just Marked As Spam", ""
-
1
l.store "Spam", ""
-
-
# app/views/accounts/login.html.erb
-
1
l.store "I've lost my password", ""
-
1
l.store "Login", "Login"
-
1
l.store "Password", "Passwort"
-
1
l.store "Remember me", ""
-
1
l.store "Submit", ""
-
1
l.store "Back to ", ""
-
-
# app/views/accounts/recover_password.html.erb
-
1
l.store "Username or email", ""
-
-
# app/views/accounts/signup.html.erb
-
1
l.store "Create an account", ""
-
1
l.store "Username", "Benutzername"
-
1
l.store "Email", "Email"
-
1
l.store "Signup", "Registrieren"
-
-
# app/views/admin/categories/_categories.html.erb
-
1
l.store "Title", "Titel"
-
1
l.store "Reorder", "Sortieren"
-
1
l.store "Sort alphabetically", "Alphabetisch sortieren"
-
-
# app/views/admin/categories/_form.html.erb
-
1
l.store "Keywords", ""
-
-
# app/views/admin/categories/destroy.html.erb
-
1
l.store "Are you sure you want to delete the category ", "Sind Sie sicher, die Kategorie zu löschen: "
-
1
l.store "Delete this category", "Kategorie löschen"
-
1
l.store "Categories", ""
-
-
# app/views/admin/categories/index.html.erb
-
1
l.store "New Category", ""
-
-
# app/views/admin/categories/new.html.erb
-
1
l.store "%s Category", ""
-
-
# app/views/admin/categories/reorder.html.erb
-
1
l.store "(Done)", "(Fertig)"
-
-
# app/views/admin/content/_attachment.html.erb
-
1
l.store "Remove", "Löschen"
-
1
l.store "Currently this article has the following resources", "Aktuell sind folgende Ressourcen dem Artikel zugeordnet"
-
1
l.store "You can associate the following resources", "Sie können folgende Ressourcen zuordnen"
-
1
l.store "Really delete attachment", "Anhang wirklich löschen"
-
1
l.store "Add Another Attachment", "Einen weiteren Anhang hinzufügen"
-
-
# app/views/admin/content/_drafts.html.erb
-
1
l.store "Drafts", ""
-
-
# app/views/admin/content/_form.html.erb
-
1
l.store "Publish settings", ""
-
1
l.store "Allow comments", "Kommentare erlauben"
-
1
l.store "Allow trackbacks", "Trackbacks erlauben"
-
1
l.store "Password:", ""
-
1
l.store "Publish", "Veröffentlichen"
-
1
l.store "Excerpt", ""
-
1
l.store "Excerpts are posts summaries that are shown on your blog homepage only but won’t appear on the post itself", ""
-
1
l.store "Uploads", ""
-
1
l.store "Post settings", ""
-
1
l.store "Publish at", "Veröffentlicht am"
-
1
l.store "Permalink", "Permanenter Link"
-
1
l.store "Article filter", "Textfilter für Artikel"
-
1
l.store "Save as draft", ""
-
-
# app/views/admin/content/destroy.html.erb
-
1
l.store "Are you sure you want to delete this article", "Sind Sie sicher, diesen Artikel zu löschen"
-
1
l.store "Delete this article", "Diesen Artikel löschen"
-
1
l.store "Articles", ""
-
-
# app/views/admin/content/index.html.erb
-
1
l.store "New Article", ""
-
1
l.store "Search articles that contain ...", ""
-
1
l.store "Search", ""
-
1
l.store "Author", "Autor"
-
1
l.store "Date", ""
-
1
l.store "Feedback", "Diskussion"
-
1
l.store "Filter", ""
-
1
l.store "Manage articles", ""
-
-
# app/views/admin/dashboard/_comments.html.erb
-
1
l.store "Latest Comments", ""
-
1
l.store "No comments yet", ""
-
1
l.store "By %s on %s", ""
-
-
# app/views/admin/dashboard/_inbound.html.erb
-
1
l.store "Inbound links", ""
-
1
l.store "No one made a link to you yet", ""
-
1
l.store " made a link to you saying ", ""
-
1
l.store "You have no internet connection", ""
-
-
# app/views/admin/dashboard/_overview.html.erb
-
1
l.store "This place gives you a quick overview of what happens on your Typo blog and what you can do. Maybe will you want to %s, %s or %s.", ""
-
1
l.store "update your profile or change your password", ""
-
1
l.store "You can also do a bit of design, %s or %s.", ""
-
1
l.store "change your blog presentation", ""
-
1
l.store "enable plugins", ""
-
1
l.store "write a post", ""
-
1
l.store "write a page", ""
-
-
# app/views/admin/dashboard/_popular.html.erb
-
1
l.store "Most popular", ""
-
1
l.store "Nothing to show yet", ""
-
-
# app/views/admin/dashboard/_posts.html.erb
-
1
l.store "Latest Posts", ""
-
1
l.store "No posts yet, why don't you start and write one", ""
-
-
# app/views/admin/dashboard/_typo_dev.html.erb
-
1
l.store "Latest news from the Typo development blog", ""
-
1
l.store "Oh no, nothing new", ""
-
-
# app/views/admin/dashboard/_welcome.html.erb
-
1
l.store "Welcome back, %s!", ""
-
1
l.store "%d articles and %d comments were posted since your last connexion", ""
-
1
l.store "You're running Typo %s", ""
-
1
l.store "Total posts : %d", ""
-
1
l.store "Your posts : %d", ""
-
1
l.store "Total comments : %d", ""
-
1
l.store "Spam comments : %d", ""
-
-
# app/views/admin/feedback/_button.html.erb
-
1
l.store "Select action", ""
-
1
l.store "Delete Checked Items", ""
-
1
l.store "Delete all spam", ""
-
1
l.store "Mark Checked Items as Spam", ""
-
1
l.store "Mark Checked Items as Ham", ""
-
1
l.store "All comments", ""
-
1
l.store "Limit to ham", ""
-
1
l.store "Unapproved comments", ""
-
1
l.store "Limit to spam", "Einschränken auf Spam"
-
-
# app/views/admin/feedback/_form.html.erb
-
1
l.store "Add a comment", ""
-
1
l.store "Url", "Url"
-
-
# app/views/admin/feedback/_spam.html.erb
-
1
l.store "This comment by <strong>%s</strong> was flagged as spam, %s?", ""
-
-
# app/views/admin/feedback/article.html.erb
-
1
l.store "Comments for %s", ""
-
1
l.store "Status", "Status"
-
1
l.store "Comment Author", ""
-
1
l.store "Comment", ""
-
-
# app/views/admin/feedback/edit.html.erb
-
1
l.store "Comments for", "Kommentare für"
-
-
# app/views/admin/feedback/index.html.erb
-
1
l.store "Search Comments and Trackbacks that contain", ""
-
1
l.store "Article", ""
-
-
# app/views/admin/pages/_form.html.erb
-
1
l.store "Online", "Online"
-
1
l.store "Page settings", ""
-
1
l.store "Permanent link", ""
-
-
# app/views/admin/pages/destroy.html.erb
-
1
l.store "Pages","Seiten"
-
1
l.store "Are you sure you want to delete the page", "Sind Sie sicher, diese Seite zu löschen"
-
1
l.store "Delete this page", "Diese Seite löschen"
-
-
# app/views/admin/pages/index.html.erb
-
1
l.store "New Page", ""
-
1
l.store "Manage pages", ""
-
-
# app/views/admin/profiles/index.html.erb
-
1
l.store "Your profile", ""
-
-
# app/views/admin/resources/_mime_edit.html.erb
-
1
l.store "Content Type", "Content Type"
-
-
# app/views/admin/resources/_pages.html.erb
-
1
l.store "Previous page", "Vorherige Seite"
-
1
l.store "Next page", "Nächste Seite"
-
-
# app/views/admin/resources/_upload.html.erb
-
1
l.store "Upload a File to your Site", "Legen Sie einen Dateianhang an ihrer Site an"
-
1
l.store "File", ""
-
1
l.store "Upload", "Upload"
-
-
# app/views/admin/resources/destroy.html.erb
-
1
l.store "Are you sure you want to delete this file", "Sind Sie sicher, diese Datei zu löschen"
-
1
l.store "Delete this file from the webserver?", "Diese Datei vom Webserver löschen?"
-
1
l.store "File Uploads", "Dateianhänge"
-
-
# app/views/admin/resources/images.html.erb
-
1
l.store "Thumbnail", ""
-
1
l.store "File Size", "Dateigröße"
-
1
l.store "Images", ""
-
1
l.store "right-click for link", ""
-
-
# app/views/admin/resources/index.html.erb
-
1
l.store "Filename", "Dateiname"
-
-
# app/views/admin/settings/_submit.html.erb
-
1
l.store "Update settings", ""
-
-
# app/views/admin/settings/feedback.html.erb
-
1
l.store "Enable comments by default", "Kommentare per default erlauben"
-
1
l.store "Enable Trackbacks by default", "Trackbacks per default aktivieren"
-
1
l.store "Enable feedback moderation", "Moderation von Kommentaren aktivieren"
-
1
l.store "You can enable site wide feeback moderation. If you do so, no comment or trackback will appear on your blog unless you validate it", ""
-
1
l.store "Comments filter", "Textfilter für Kommentar"
-
1
l.store "Enable gravatars", "Gratavare aktivieren"
-
1
l.store "Show your email address", "Ihre Email Adresse anzeigen"
-
1
l.store "Notifications", ""
-
1
l.store "Typo can notify you when new articles or comments are posted", "Typo kann Sie benachrichtigen, wenn neue Artikel oder Kommentare angelegt werden"
-
1
l.store "Source Email", "Email Adresse"
-
1
l.store "Email address used by Typo to send notifications", "Email Adresse, die Typo beim Versenden von Benachrichtigungen verwenden soll"
-
1
l.store "Enabling spam protection will make typo compare the IP address of posters as well as the contents of their posts against local and remote blacklists. Good defense against spam bots", "Bei Aktivierung des Spamschutzes wird Typo sowohl die IP Adresse des Autors als auch den Inhalt seiner Veröffentlichung gegen lokale und entfernte Blacklisten vergleichen. Gute Abwehr von Spambots"
-
1
l.store "Enable spam protection", "Spamschutz aktivieren"
-
1
l.store "Akismet Key", "Akismet Key"
-
1
l.store "Typo can (optionally) use the %s spam-filtering service. You need to register with Akismet and receive an API key before you can use their service. If you have an Akismet key, enter it here", "Typo kann (optional) den %s Spam-Filterdienst verwenden. Sie müssen sich dort registriert und einen API Key erhalten haben, bevor Sie diesen Dienst nutzen können. Wenn Sie einen solchen Key haben, geben Sie ihn hier ein"
-
1
l.store "Disable trackbacks site-wide", ""
-
1
l.store "This setting allows you to disable trackbacks for every article in your blog. It won't remove existing trackbacks, but it will prevent any further attempt to add a trackback anywhere on your blog.", "Diese Option erlaubt es Ihnen, Trackbacks für alle Artikel im gesamten Blog zu deaktivieren. Dadurch werden zwar keine bereits existierenden Trackbacks entfernt, aber alle zukünftig irgendwo in Ihrem Blog eintreffenden Trackbacks werden abgewiesen."
-
1
l.store "Disable comments after", "Kommentare abschalten nach"
-
1
l.store "days", "Tagen"
-
1
l.store "Set to 0 to never disable comments", "Wert 0 bewirkt, dass die Möglichkeit für Kommentare immer bestehen bleibt"
-
1
l.store "Max Links", "Maximale Anzahl Links"
-
1
l.store "Typo will automatically reject comments and trackbacks which contain over a certain amount of links in them", "Typo kann automatisch Kommentare und Trackbacks abweisen, die mehr als eine bestimmte Anzahl von Links enthalten"
-
1
l.store "Set to 0 to never reject comments", "Wert 0 bewirkt, dass Kommentare nie abgewiesen werden"
-
1
l.store "Feedback settings", ""
-
-
# app/views/admin/settings/index.html.erb
-
1
l.store "Your blog", "Mein Blog"
-
1
l.store "Blog name", "Blog Titel"
-
1
l.store "Blog subtitle", "Blog Untertitel"
-
1
l.store "Blog URL", "Blog Adresse"
-
1
l.store "Language", "Language" #Need translate
-
1
l.store "Allow users to register", ""
-
1
l.store "You can allow users to register to your blog. By default, they will register as contributors, an unpriviledged account level which grant them no rights but own a profile on the site. If you don't want users to register, you can thus add them by yourself in the users part of this admin.", ""
-
1
l.store "Items to display in admin lists", ""
-
1
l.store "Publishing options", ""
-
1
l.store "Display", "Zeige"
-
1
l.store "articles on my homepage by default", "Artikel auf einmal auf meiner Homepage"
-
1
l.store "articles in my news feed by default", "Artikel auf einmal in meinen RSS News Feeds"
-
1
l.store "Show full article on feed", "Ganzen Artikel im RSS News Feed anzeigen"
-
1
l.store "Feedburner ID", ""
-
1
l.store "General settings", "Allgemeine Einstellungen"
-
1
l.store "You can use your Google Feedburner account instead of Typo feed URL. To enable this, fill this form with your Feedburner ID.", ""
-
-
# app/views/admin/settings/seo.html.erb
-
1
l.store "Search Engine Optimisation", ""
-
1
l.store "Format of permalink", ""
-
1
l.store "Google Analytics", ""
-
1
l.store "Google verification link", ""
-
1
l.store "Meta description", ""
-
1
l.store "Meta keywords", ""
-
1
l.store "Use RSS description", ""
-
1
l.store "Index categories", ""
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every category page, removing them from search engines and preventing duplicate content issues", ""
-
1
l.store "Index tags", ""
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every tags page, removing them from search engines and preventing duplicate content issues", ""
-
1
l.store "Robots.txt", ""
-
1
l.store "You robots.txt file is not writeable. Typo won't be able to write it", ""
-
1
l.store "Search Engine Optimization", ""
-
1
l.store "This will display", ""
-
1
l.store "at the bottom of each of your post in the RSS feed", ""
-
-
# app/views/admin/settings/update_database.html.erb
-
1
l.store "Information", "Information"
-
1
l.store "Current database version", "Aktuelle Datenbank Version"
-
1
l.store "New database version", "Neue Datenbank Version"
-
1
l.store "Your database supports migrations", "Ihre Datenbank unterstützt Migrationen"
-
1
l.store "Needed migrations", "Migrationen sind notwendig"
-
1
l.store "You are up to date!", "Sie sind auf dem aktuellsten Stand!"
-
1
l.store "Update database now", "Update der Datenbank jetzt"
-
1
l.store "may take a moment", "dauert einen Moment"
-
1
l.store "Database migration", "Datenbank Migration"
-
1
l.store "yes", "ja"
-
1
l.store "no", "nein"
-
-
# app/views/admin/settings/write.html.erb
-
1
l.store "Send trackbacks", "Trackbacks verschicken"
-
1
l.store "When publishing articles, Typo can send trackbacks to websites that you link to. This should be disabled for private blogs as it will leak non-public information to sites that you're discussing. For public blogs, there's no real point in disabling this.", "Typo kann Trackbacks zu anderen Websites schicken, zu denen Sie in veröffentlichten Artikeln verlinken. Das sollte für private Blogs deaktiviert werden, weil sonst nicht-öffentliche Informationen mit dem Trackback Ping nach außen zu den Seiten gehen, die Sie in Ihren Artikeln diskutieren. Für öffentliche Blogs jedoch besteht kein wirklicher Grund, das zu deaktivieren."
-
1
l.store "URLs to ping automatically", "Automatisch diese URLs anpingen"
-
1
l.store "Latitude, Longitude", "geografische Breite, Länge"
-
1
l.store "your lattitude and longitude", "Ihrer geografischen Breite und Länge"
-
1
l.store "exemple", "Beispiel"
-
1
l.store "Write", "Schreiben"
-
-
# app/views/admin/sidebar/_availables.html.erb
-
1
l.store "You have no plugins installed", "Sie haben keine Plugins installiert"
-
-
# app/views/admin/sidebar/_publish.html.erb
-
1
l.store "Changes published", "Änderungen veröffentlicht"
-
-
# app/views/admin/sidebar/_target.html.erb
-
1
l.store "Drag some plugins here to fill your sidebar", "Ziehen Sie Plugins hierher, um sie in die Seitenleiste aufzunehmen"
-
-
# app/views/admin/sidebar/index.html.erb
-
1
l.store "Drag and drop to change the sidebar items displayed on this blog. To remove items from the sidebar just click remove Changes are saved immediately, but not activated until you click the 'Publish' button", "Verwenden Sie Drag&Drop, um die Einträge der Seitenleiste ihres Blogs zu ändern. Um Einträge zu löschen, klicken Sie auf 'remove'. Änderungen sind hier sofort sichtbar, werden aber erst permanent aktiviert, wenn Sie 'Änderungen veröffentlichen' klicken."
-
1
l.store "Available Items", "Verfügbare Einträge"
-
1
l.store "Active Sidebar items", "Aktive Einträge der Seitenleiste"
-
1
l.store "Get more plugins", ""
-
1
l.store "Sidebar", ""
-
1
l.store "Publish changes", "Änderungen veröffentlichen"
-
-
# app/views/admin/tags/_form.html.erb
-
1
l.store "Display name", "Anzeigename"
-
-
# app/views/admin/tags/destroy.html.erb
-
1
l.store "Are you sure you want to delete the tag", ""
-
1
l.store "Delete this tag", ""
-
-
# app/views/admin/tags/edit.html.erb
-
1
l.store "Editing ", ""
-
1
l.store "Back to tags list", ""
-
-
# app/views/admin/tags/index.html.erb
-
1
l.store "Display Name", ""
-
1
l.store "Manage tags", ""
-
-
# app/views/admin/themes/catalogue.html.erb
-
1
l.store "Sorry the theme catalogue is not available", ""
-
1
l.store "Theme catalogue", ""
-
-
# app/views/admin/themes/editor.html.erb
-
1
l.store "Theme editor", ""
-
-
# app/views/admin/themes/index.html.erb
-
1
l.store "Active theme", "Aktives Motiv"
-
1
l.store "Get more themes", ""
-
1
l.store "You can download third party themes from officially supported %s ", ""
-
1
l.store "Typogarden", ""
-
1
l.store "To install a theme you just need to upload the theme folder into your themes directory. Once a theme is uploaded, you should see it on this page.", ""
-
1
l.store "Choose a theme", "Motiv auswählen"
-
-
# app/views/admin/users/_form.html.erb
-
1
l.store "Account settings", ""
-
1
l.store "Password confirmation", ""
-
1
l.store "Profile", ""
-
1
l.store "User's status", ""
-
1
l.store "Active", ""
-
1
l.store "Inactive", ""
-
1
l.store "Profile Settings", ""
-
1
l.store "Firstname", ""
-
1
l.store "Lastname", ""
-
1
l.store "Nickname", ""
-
1
l.store "Editor", ""
-
1
l.store "Use simple editor", ""
-
1
l.store "Use visual rich editor", ""
-
1
l.store "Send notification messages via email", "Benachrichtigung via Email schicken"
-
1
l.store "Send notification messages when new articles are posted", "Benachrichtigung schicken, wenn neue Artikel veröffentlicht werden"
-
1
l.store "Send notification messages when comments are posted", "Benachrichtigung schicken, wenn neue Kommentare eintreffen"
-
1
l.store "Contact Options", ""
-
1
l.store "Your site", ""
-
1
l.store "display url on public profile", ""
-
1
l.store "Your MSN", ""
-
1
l.store "display MSN ID on public profile", ""
-
1
l.store "Your Yahoo ID", ""
-
1
l.store "display Yahoo! ID on public profile", ""
-
1
l.store "Your Jabber ID", ""
-
1
l.store "display Jabber ID on public profile", ""
-
1
l.store "Your AIM id", ""
-
1
l.store "display AIM ID on public profile", ""
-
1
l.store "Your Twitter username", ""
-
1
l.store "display twitter on public profile", ""
-
1
l.store "Tell us more about you", ""
-
-
# app/views/admin/users/destroy.html.erb
-
1
l.store "Really delete user", "Benutzer wirklich löschen"
-
1
l.store "Yes", ""
-
1
l.store "Users", ""
-
-
# app/views/admin/users/edit.html.erb
-
1
l.store "Edit User", "Benutzer bearbeiten"
-
-
# app/views/admin/users/index.html.erb
-
1
l.store "New User", "Neuer Benutzer"
-
1
l.store "Comments", ""
-
1
l.store "State", ""
-
1
l.store "%s user", ""
-
-
# app/views/admin/users/new.html.erb
-
1
l.store "Add User", ""
-
-
# app/views/articles/_article.html.erb
-
1
l.store "Posted by", "Angelegt von"
-
1
l.store "Continue reading", "Weiter lesen"
-
-
# app/views/articles/_comment.html.erb
-
1
l.store "said", "sagte"
-
1
l.store "This comment has been flagged for moderator approval. It won't appear on this blog until the author approves it", "Dieser Kommentar wurde für die Moderatorfreigabe markiert. Er wird erst nach Freigabe durch den Moderator in diesem Blog erscheinen"
-
-
# app/views/articles/_comment_box.html.erb
-
1
l.store "Your name", "Mein Name"
-
1
l.store "Your email", "Meine Email"
-
1
l.store "Your message", "Meine Nachricht"
-
1
l.store "Comment Markup Help", "Hilfe zu Kommentar Markup"
-
1
l.store "Preview comment", "Kommentar Vorschau"
-
1
l.store "leave url/email", ""
-
-
# app/views/articles/_comment_failed.html.erb
-
1
l.store "Oops, something wrong happened, the comment could not be saved", ""
-
-
# app/views/articles/_trackback.html.erb
-
1
l.store "From", "Von"
-
-
# app/views/articles/archives.html.erb
-
1
l.store "No articles found", "Keine Artikel gefunden"
-
1
l.store "posted in", ""
-
-
# app/views/articles/comment_preview.html.erb
-
1
l.store "is about to say", "will sagen"
-
-
# app/views/articles/groupings.html.erb
-
1
l.store "There are", "Es gibt"
-
-
# app/views/articles/read.html.erb
-
1
l.store "Leave a response", "Einen Kommentar hinterlassen"
-
1
l.store "Trackbacks", ""
-
1
l.store "Use the following link to trackback from your own site", "Verwenden Sie den folgenden Link zur Rückverlinkung von Ihrer eigenen Seite"
-
1
l.store "RSS feed for this post", "RSS Feed für diesen Artikel"
-
1
l.store "trackback uri", "Trackback URI"
-
1
l.store "Comments are disabled", "Kommentare sind deaktiviert"
-
-
# app/views/authors/show.html.erb
-
1
l.store "Web site:", ""
-
1
l.store "MSN:", ""
-
1
l.store "Yahoo:", ""
-
1
l.store "Jabber:", ""
-
1
l.store "AIM:", ""
-
1
l.store "Twitter:", ""
-
1
l.store "About %s", ""
-
1
l.store "This author has not published any article yet", ""
-
-
# app/views/comments/show.html.erb
-
1
l.store "This comment has been flagged for moderator approval.", ""
-
-
# app/views/layouts/administration.html.erb
-
1
l.store "%s »", ""
-
1
l.store "is proudly powered by", ""
-
1
l.store "Dashboard", ""
-
-
# app/views/setup/index.html.erb
-
1
l.store "Welcome", ""
-
1
l.store "Welcome to your %s blog setup. Just fill in your blog title and your email, and Typo will take care of everything else", ""
-
-
# app/views/shared/_confirm.html.erb
-
1
l.store "Congratulation!", ""
-
1
l.store "You have successfully signed up", ""
-
1
l.store "<strong>Login:</strong> %s", ""
-
1
l.store "<strong>Password:</strong> %s", ""
-
1
l.store "Don't lose the mail sent at %s or you won't be able to login anymore", ""
-
1
l.store "Proceed to %s", ""
-
1
l.store "admin", ""
-
-
# app/views/shared/_search.html.erb
-
1
l.store "Live Search", ""
-
-
# test/mocks/themes/typographic/layouts/default.html.erb
-
1
l.store "Powered by %s", ""
-
1
l.store "Designed by %s ", ""
-
-
# test/mocks/themes/typographic/views/articles/_article.html.erb
-
1
l.store "Continue reading...", ""
-
1
l.store "This entry was posted on %s", ""
-
1
l.store "and %s", ""
-
1
l.store "You can follow any response to this entry through the %s", ""
-
1
l.store "Atom feed", ""
-
1
l.store "You can leave a %s", ""
-
1
l.store "or a %s from your own site", ""
-
1
l.store "Read full article", ""
-
1
l.store "comment", ""
-
1
l.store "trackback", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment.html.erb
-
1
l.store "later", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment_form.html.erb
-
1
l.store "Leave a comment", ""
-
1
l.store "Name %s", ""
-
1
l.store "enabled", ""
-
1
l.store "never displayed", ""
-
1
l.store "Website", ""
-
1
l.store "Textile enabled", ""
-
1
l.store "Markdown enabled", ""
-
1
l.store "required", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment_list.html.erb
-
1
l.store "No comments", ""
-
-
# test/mocks/themes/typographic/views/shared/_search.html.erb
-
1
l.store "Searching", ""
-
-
# themes/dirtylicious/layouts/default.html.erb
-
1
l.store "Home", ""
-
1
l.store "About", ""
-
1
l.store "Designed by %s ported to typo by %s ", ""
-
-
# themes/scribbish/layouts/default.html.erb
-
1
l.store "styled with %s", ""
-
-
# themes/scribbish/views/articles/_article.html.erb
-
1
l.store "Meta", ""
-
1
l.store "permalink", ""
-
-
# themes/true-blue-3/helpers/theme_helper.rb
-
1
l.store "You are here: ", ""
-
1
l.store "%d comment", ""
-
-
# themes/true-blue-3/views/articles/_article.html.erb
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M", ""
-
-
# themes/true-blue-3/views/articles/_comment.html.erb
-
1
l.store "By", ""
-
1
l.store "later:", ""
-
-
# themes/true-blue-3/views/articles/_comment_form.html.erb
-
1
l.store "Email address", ""
-
1
l.store "Your website", ""
-
-
# themes/true-blue-3/views/articles/read.html.erb
-
1
l.store "If you liked this article you can %s", ""
-
1
l.store "add me to Twitter", ""
-
1
l.store "Trackbacks for", "Trackback für"
-
-
# themes/true-blue-3/views/articles/search.html.erb
-
1
l.store "Search results for:", ""
-
-
# themes/true-blue-3/views/categories/index.html.erb
-
1
l.store "Read all articles in %s", ""
-
-
# themes/true-blue-3/views/categories/show.html.erb
-
1
l.store "Previous", ""
-
1
l.store "Next", ""
-
-
# vendor/plugins/archives_sidebar/views/content.rhtml
-
1
l.store "Archives", "Archive"
-
-
# vendor/plugins/authors_sidebar/views/content.rhtml
-
1
l.store "Authors", ""
-
-
# vendor/plugins/xml_sidebar/views/content.rhtml
-
1
l.store "Syndicate", "Syndikat"
-
1
l.store "Category %s", ""
-
1
l.store "Tag %s", ""
-
-
# Obsolete translations
-
1
l.store "%d Articles", ["Artikel", "%d Artikel"]
-
1
l.store "%d Categories", ["Kategorie", "%d Kategorien"]
-
1
l.store "%d Comments", ["Kommentar", "%d Kommentare"]
-
1
l.store "%d Tags", ["Tag", "%d Tags"]
-
1
l.store "%d Trackbacks", ["Trackback", "%d Trackbacks"]
-
1
l.store "%d Users", ["Benutzer", "%d Benutzer"]
-
1
l.store "AIM Presence", "AIM Anwesenheit"
-
1
l.store "AIM Status", "AIM Status"
-
1
l.store "Action", "Aktion"
-
1
l.store "Activate", "Aktivieren"
-
1
l.store "Add MetaData", "Metadaten hinzufügen"
-
1
l.store "Add category", "Kategorie hinzufügen"
-
1
l.store "Add new user", "Neuen Benutzer anlegen"
-
1
l.store "Add pattern", "Muster hinzufügen"
-
1
l.store "Allow non-ajax comments", "non-AJAX Kommentare erlauben"
-
1
l.store "Are you sure you want to delete this filter", "Sind sie sicher, diesen Textfilter zu löschen"
-
1
l.store "Are you sure you want to delete this item?", "Diesen Eintrag löschen, sind Sie sicher?"
-
1
l.store "Article Attachments", "Artikel Anhänge"
-
1
l.store "Article Body", "Artikel"
-
1
l.store "Article Content", "Artikel Inhalt"
-
1
l.store "Article Options", "Artikel Optionen"
-
1
l.store "Articles in", "Artikel in"
-
1
l.store "Attachments", "Anhänge"
-
1
l.store "Back to the blog", "Zurück zum Blog"
-
1
l.store "Blacklist", "Blacklist"
-
1
l.store "Blacklist Patterns", "Blacklist Muster"
-
1
l.store "Blog settings", "Blog Einstellungen"
-
1
l.store "Body", "Text"
-
1
l.store "Cache", "Cache"
-
1
l.store "Category title", "Name der Kategorie"
-
1
l.store "Choose password", "Passwort"
-
1
l.store "Comments and Trackbacks for", "Kommentare und Trackbacks für"
-
1
l.store "Confirm password", "Passwort bestätigen"
-
1
l.store "Copyright Information", "Copyright Informationen"
-
1
l.store "Create new Blacklist", "Neue Blacklist anlegen"
-
1
l.store "Create new category", "Neue Kategorie anlegen"
-
1
l.store "Create new page", "Neue Seite anlegen"
-
1
l.store "Create new text filter", "Neuen Textfilter anlegen"
-
1
l.store "Creating comment", "Kommentar anlegen"
-
1
l.store "Creating text filter", "Textfilter anlegen"
-
1
l.store "Creating trackback", "Trackback anlegen"
-
1
l.store "Creating user", "Benutzer anlegen"
-
1
l.store "Currently this article is listed in following categories", "Aktuell ist dieser Artikel den folgenden Kategorien zugeordnet"
-
1
l.store "Customize Sidebar", "Seitenleiste einstellen"
-
1
l.store "Delete this filter", "Diesen Textfilter löschen"
-
1
l.store "Design", "Design"
-
1
l.store "Desired login", "Benutzername"
-
1
l.store "Discuss", "Diskussion"
-
1
l.store "Do you want to go to your blog?", "Möchten Sie zum Blog gehen?"
-
1
l.store "Duration", "Dauer"
-
1
l.store "Edit Article", "Artikel bearbeiten"
-
1
l.store "Edit MetaData", "Metadaten bearbeiten"
-
1
l.store "Edit this article", "Diesen Artikel bearbeiten"
-
1
l.store "Edit this category", "Diese Kategorie bearbeiten"
-
1
l.store "Edit this filter", "Filter bearbeiten"
-
1
l.store "Edit this page", "Diese Seite bearbeiten"
-
1
l.store "Edit this trackback", "Trackback bearbeiten"
-
1
l.store "Editing User", "Aufbereitung des Benutzers"
-
1
l.store "Editing category", "Kategorie bearbeiten"
-
1
l.store "Editing comment", "Kommentar bearbeiten"
-
1
l.store "Editing page", "Seite bearbeiten"
-
1
l.store "Editing pattern", "Muster bearbeiten"
-
1
l.store "Editing textfilter", "Textfilter bearbeiten"
-
1
l.store "Editing trackback", "Trackback bearbeiten"
-
1
l.store "Empty Fragment Cache", "Cache leeren"
-
1
l.store "Explicit", "Explizit"
-
1
l.store "Extended Content", "Erweiterter Inhalt"
-
1
l.store "Feedback Search", "Suche"
-
1
l.store "Filters", "Filter"
-
1
l.store "General Settings", "Allgemeine Einstellungen"
-
1
l.store "IP", "IP-Adresse"
-
1
l.store "Jabber", "Jabber"
-
1
l.store "Jabber account", "Jabber Account"
-
1
l.store "Jabber account to use when sending Jabber notifications", "Jabber Account für das Senden von Jabber Benachrichtigungen"
-
1
l.store "Jabber password", "Jabber Passwort"
-
1
l.store "Key Words", "Schlagwörter"
-
1
l.store "Last updated", "Zuletzt aktualisiert"
-
1
l.store "Limit to unconfirmed", "Einschränken auf Unbestätigte"
-
1
l.store "Limit to unconfirmed spam", "Einschränken auf unbestätigten Spam"
-
1
l.store "Location", "Adresse"
-
1
l.store "Logoff", "Logoff"
-
1
l.store "Macro Filter Help", "Hilfe zu Makrofilter"
-
1
l.store "Macros", "Makros"
-
1
l.store "Manage", "Verwalten"
-
1
l.store "Manage Articles", "Artikel verwalten"
-
1
l.store "Manage Categories", "Kategorien verwalten"
-
1
l.store "Manage Pages", "Seiten verwalten"
-
1
l.store "Manage Resources", "Ressourcen verwalten"
-
1
l.store "Manage Text Filters", "Textfilter verwalten"
-
1
l.store "Markup", "Markup"
-
1
l.store "Markup type", "Markup Typ"
-
1
l.store "MetaData", "Metadaten"
-
1
l.store "Not published by Apple", "Nicht von Apple publiziert"
-
1
l.store "Notification", "Benachrichtigung"
-
1
l.store "Notified", "Benachrichtigt"
-
1
l.store "Notify on new articles", "Benachrichtigung bei neuen Artikeln"
-
1
l.store "Notify on new comments", "Benachrichtigung bei neuen Kommentaren"
-
1
l.store "Notify via email", "Benachrichtigung via Email"
-
1
l.store "Number of Articles", "Anzahl Artikel"
-
1
l.store "Number of Comments", "Anzahl Kommentare"
-
1
l.store "Offline", "Offline"
-
1
l.store "Older posts", "Weitere Artikel"
-
1
l.store "Optional Name", "Optionaler Name"
-
1
l.store "Page Body", "Seiteninhalt"
-
1
l.store "Page Options", "Seiten Optionen"
-
1
l.store "Parameters", "Parameter"
-
1
l.store "Password Confirmation", "Passwort bestätigen"
-
1
l.store "Pattern", "Muster"
-
1
l.store "Pictures from", "Bilder von"
-
1
l.store "Post title", "Titel des Artikels"
-
1
l.store "Post-processing filters", "Filter für Post-Processing"
-
1
l.store "Posted at", "Veröffentlicht am"
-
1
l.store "Posted date", "Angelegt am"
-
1
l.store "Preview Article", "Artikel Vorschau "
-
1
l.store "Read", "Lesen"
-
1
l.store "Read more", "Mehr lesen"
-
1
l.store "Rebuild cached HTML", "Im Cache gespeicherte HTML Seiten neu generieren"
-
1
l.store "Recent comments", "Neueste Kommentare"
-
1
l.store "Recent trackbacks", "Neueste Trackbacks"
-
1
l.store "Regex", "Regulärer Ausdruck"
-
1
l.store "Remove iTunes Metadata", "iTunes Metadaten entfernen"
-
1
l.store "Resource MetaData", "Metadaten der Ressource"
-
1
l.store "Resource Settings", "Einstellungen für Ressourcen"
-
1
l.store "Save Settings", "Einstellungen speichern"
-
1
l.store "See help text for this filter", "Hilfe für diesen Filter"
-
1
l.store "Set iTunes metadata for this enclosure", "iTunes Metadaten für diesen Anhang festlegen"
-
1
l.store "Setting for channel", "Kanaloptionen"
-
1
l.store "Settings", "Einstellungen"
-
1
l.store "Show Help", "Hilfe"
-
1
l.store "Show this article", "Diesen Artikel anzeigen"
-
1
l.store "Show this category", "Kategorie anzeigen"
-
1
l.store "Show this comment", "Diesen Kommentar anzeigen"
-
1
l.store "Show this page", "Diese Seite anzeigen"
-
1
l.store "Show this pattern", "Muster anzeigen"
-
1
l.store "Show this user", "Diesen Benutzer anzeigen"
-
1
l.store "Spam Protection", "Spamschutz"
-
1
l.store "Spam protection", "Spamschutz"
-
1
l.store "String", "Zeichenkette"
-
1
l.store "Subtitle", "Untertitel"
-
1
l.store "Summary", "Zusammenfassung"
-
1
l.store "Text Filter Details", "Details zum Textfilter"
-
1
l.store "Text Filters", "Textfilter"
-
1
l.store "Textfilter", "Textfilter"
-
1
l.store "The below settings act as defaults when you choose to publish an enclosure with iTunes metadata", "Folgende Einstellungen wirken als Voreinstellungen, wenn Sie einen Anhang mit iTunes Metadaten veröffentlichen"
-
1
l.store "There are %d entries in the cache", "Es sind %d Einträge im Cache"
-
1
l.store "Things you can do", "Folgendes können Sie tun ..."
-
1
l.store "This option let you choose between the simple admin interface or the complete one, displaying much more options and therefore more complicated to use. For advanced users only!","This option let you choose between the simple admin interface or the complete one, displaying much more options and therefore more complicated to use. For advanced users only!" #Need translate
-
1
l.store "Toggle Extended Content", "Erweiterten Inhalt umschalten"
-
1
l.store "Type", "Typ"
-
1
l.store "Typo admin", "Typo Administrator"
-
1
l.store "Upload a new File", "Eine neue Datei hochladen"
-
1
l.store "Upload a new Resource", "Eine neue Ressource hochladen"
-
1
l.store "Uploaded", "Upload beendet"
-
1
l.store "User's articles", "Artikel des Benutzers"
-
1
l.store "View article on your blog", "Artikel in Ihrem Blog anschauen"
-
1
l.store "View comment on your blog", "Kommentar in Ihrem Blog anschauen"
-
1
l.store "View page on your blog", "Seite in Ihrem Blog anschauen"
-
1
l.store "Which settings group would you like to edit", "Welche Einstellungsgruppe möchten Sie bearbeiten"
-
1
l.store "Write a Page", "Eine Seite schreiben"
-
1
l.store "Write an Article", "Einen Artikel schreiben"
-
1
l.store "XML Syndication", "XML Syndikat"
-
1
l.store "You are now logged out of the system", "Sie sind nun vom System abgemeldet"
-
1
l.store "You can add it to the following categories", "Sie können ihn zu den folgenden Kategorien hinzufügen"
-
1
l.store "You can enable site wide feedback moderation. If you do so, no comment or trackback will appear on your blog unless you validate it", "Sie können die Moderation von Kommentaren auf der gesamten Website aktivieren. Dann erscheinen keine Kommentare oder Trackbacks in Ihrem Blog, die sie nicht überprüft haben"
-
1
l.store "You can optionally disable non-Ajax comments. Typo will always use Ajax for comment submission if Javascript is enabled, so non-Ajax comments are either from spammers or users without Javascript.", "Sie können optional non-Ajax Kommentare verbieten. Typo verwendet immer Ajax für die Übertragung von Kommentaren, sofern Javascript eingeschaltet ist. non-Ajax Kommentare stamme somit entweder von Spammern oder von Anwendern ohne aktiviertes Javascript."
-
1
l.store "by", "bei"
-
1
l.store "log out", "Abmelden"
-
1
l.store "on", "über"
-
1
l.store "seperate with spaces", "mit Leerzeichen trennen"
-
1
l.store "via email", "per Email"
-
1
l.store "with %s Famfamfam iconset %s", "mit %s Famfamfam Icons %s"
-
1
l.store "your blog", "Ihr Blog"
-
end
-
1
Localization.define('en_US') do |l|
-
1
l.store "Login successful", "Login successful"
-
1
l.store "da_DK", "Danish"
-
1
l.store "de_DE", "German"
-
1
l.store "en_US", "English (US)"
-
1
l.store "es_MX", "Spanish (Mexican)"
-
1
l.store "fr_FR", "French"
-
1
l.store "he_IL", "Hebrew"
-
1
l.store "it_IT", "Italian"
-
1
l.store "ja_JP", "Japanese"
-
1
l.store "lt_LT", "Lituanian"
-
1
l.store "nb_NO", "Norwegian"
-
1
l.store "nl_NL", "Nederland"
-
1
l.store "pl_PL", "Polish"
-
1
l.store "ro_RO", "Romanian"
-
1
l.store "zh_TW", "Chinese"
-
end
-
# coding: utf-8
-
# Translation by Edgar J. Suarez
-
-
1
Localization.define("es_MX") do |l|
-
-
# app/controllers/accounts_controller.rb
-
1
l.store "Login successful", ""
-
1
l.store "Login unsuccessful", ""
-
1
l.store "An email has been successfully sent to your address with your new password", ""
-
1
l.store "Oops, something wrong just happened", ""
-
1
l.store "Successfully logged out", ""
-
1
l.store "login", ""
-
1
l.store "signup", ""
-
1
l.store "Recover your password", ""
-
-
# app/controllers/admin/categories_controller.rb
-
1
l.store "Category was successfully saved.", ""
-
1
l.store "Category could not be saved.", ""
-
-
# app/controllers/admin/content_controller.rb
-
1
l.store "Error, you are not allowed to perform this action", ""
-
1
l.store "Preview", ""
-
1
l.store "Article was successfully created", ""
-
1
l.store "Article was successfully updated.", ""
-
-
# app/controllers/admin/feedback_controller.rb
-
1
l.store "Deleted", ""
-
1
l.store "Not found", ""
-
1
l.store "Deleted %d item(s)", ""
-
1
l.store "Marked %d item(s) as Ham", ""
-
1
l.store "Marked %d item(s) as Spam", ""
-
1
l.store "Confirmed classification of %s item(s)", ""
-
1
l.store "Not implemented", ""
-
1
l.store "All spam have been deleted", ""
-
1
l.store "Comment was successfully created.", ""
-
1
l.store "Comment was successfully updated.", ""
-
-
# app/controllers/admin/pages_controller.rb
-
1
l.store "Page was successfully created.", ""
-
1
l.store "Page was successfully updated.", ""
-
-
# app/controllers/admin/profiles_controller.rb
-
1
l.store "User was successfully updated.", ""
-
-
# app/controllers/admin/resources_controller.rb
-
1
l.store "Error occurred while updating Content Type.", ""
-
1
l.store "complete", ""
-
1
l.store "File uploaded: ", ""
-
1
l.store "Unable to upload", ""
-
1
l.store "Metadata was successfully updated.", ""
-
1
l.store "Not all metadata was defined correctly.", ""
-
1
l.store "Content Type was successfully updated.", ""
-
-
# app/controllers/admin/settings_controller.rb
-
1
l.store "Please review and save the settings before continuing", ""
-
1
l.store "config updated.", ""
-
-
# app/controllers/admin/sidebar_controller.rb
-
1
l.store "It seems something went wrong. Maybe some of your sidebars are actually missing and you should either reinstall them or remove them manually", ""
-
-
# app/controllers/admin/tags_controller.rb
-
1
l.store "Tag was successfully updated.", ""
-
-
# app/controllers/admin/themes_controller.rb
-
1
l.store "Theme changed successfully", ""
-
1
l.store "You are not authorized to open this file", ""
-
1
l.store "File saved successfully", ""
-
1
l.store "Unable to write file", ""
-
-
# app/controllers/admin/users_controller.rb
-
1
l.store "User was successfully created.", ""
-
-
# app/controllers/application_controller.rb
-
1
l.store "Localization.rtl", ""
-
-
# app/controllers/articles_controller.rb
-
1
l.store "No posts found...", ""
-
1
l.store "Archives for", ""
-
1
l.store "Archives for ", ""
-
1
l.store ", Articles for ", ""
-
-
# app/controllers/grouping_controller.rb
-
1
l.store "page", ""
-
1
l.store "everything about", ""
-
-
# app/helpers/admin/base_helper.rb
-
1
l.store "Cancel", "Cancelar"
-
1
l.store "Store", ""
-
1
l.store "Delete", "Eliminar"
-
1
l.store "delete", ""
-
1
l.store "Delete content", ""
-
1
l.store "Are you sure?", ""
-
1
l.store "Please select", ""
-
1
l.store "There are no %s yet. Why don't you start and create one?", ""
-
1
l.store "or", "o"
-
1
l.store "Save", "Guardar"
-
1
l.store "Edit", "Editar"
-
1
l.store "Show", ""
-
1
l.store "Published", "Publicado"
-
1
l.store "Unpublished", ""
-
1
l.store "Show help on Typo macros", ""
-
1
l.store "Back to overview", ""
-
1
l.store "Name", "Nombre"
-
1
l.store "Description", "Descripción"
-
1
l.store "Tag", ""
-
-
# app/helpers/admin/categories_helper.rb
-
1
l.store "no articles", ""
-
1
l.store "1 article", ""
-
1
l.store "%d articles", ""
-
-
# app/helpers/admin/content_helper.rb
-
1
l.store "Destroy this draft", ""
-
-
# app/helpers/admin/feedback_helper.rb
-
1
l.store "Show conversation", ""
-
1
l.store "Flag as %s", ""
-
-
# app/helpers/application_helper.rb
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M:%%S GMT", ""
-
1
l.store "%%d. %%b", ""
-
1
l.store "%d comments", ""
-
1
l.store "no comments", "no hay comentarios"
-
1
l.store "1 comment", ""
-
1
l.store "no trackbacks", "no hay trackbacks"
-
1
l.store "1 trackback", ""
-
1
l.store "%d trackbacks", ""
-
-
# app/helpers/content_helper.rb
-
1
l.store "Posted in", ""
-
1
l.store "Tags", "Tags"
-
1
l.store "no posts", ""
-
1
l.store "1 post", ""
-
1
l.store "%d posts", ""
-
-
# app/models/article.rb
-
1
l.store "Original article writen by", ""
-
1
l.store "and published on", ""
-
1
l.store "direct link to this article", ""
-
1
l.store "If you are reading this article elsewhere than", ""
-
1
l.store "it has been illegally reproduced and without proper authorization", ""
-
-
# app/models/blog.rb
-
1
l.store "You need a permalink format with an identifier : %%month%%, %%year%%, %%day%%, %%title%%", ""
-
1
l.store "Can't end in .rss or .atom. These are reserved to be used for feed URLs", ""
-
-
# app/models/feedback/states.rb
-
1
l.store "Unclassified", ""
-
1
l.store "Just Presumed Ham", ""
-
1
l.store "Ham?", ""
-
1
l.store "Just Marked As Ham", ""
-
1
l.store "Ham", ""
-
1
l.store "Spam?", ""
-
1
l.store "Just Marked As Spam", ""
-
1
l.store "Spam", ""
-
-
# app/views/accounts/login.html.erb
-
1
l.store "I've lost my password", ""
-
1
l.store "Login", "Login"
-
1
l.store "Password", "Contraseña"
-
1
l.store "Remember me", ""
-
1
l.store "Submit", ""
-
1
l.store "Back to ", ""
-
-
# app/views/accounts/recover_password.html.erb
-
1
l.store "Username or email", ""
-
-
# app/views/accounts/signup.html.erb
-
1
l.store "Create an account", ""
-
1
l.store "Username", "Usuario"
-
1
l.store "Email", "Email"
-
1
l.store "Signup", "Registro"
-
-
# app/views/admin/categories/_categories.html.erb
-
1
l.store "Title", "Título"
-
1
l.store "Reorder", "Reorganizar"
-
1
l.store "Sort alphabetically", "Ordenar alfabéticamente"
-
-
# app/views/admin/categories/_form.html.erb
-
1
l.store "Keywords", ""
-
-
# app/views/admin/categories/destroy.html.erb
-
1
l.store "Are you sure you want to delete the category ", "¿Estás seguro que quieres eliminar esta categoría?"
-
1
l.store "Delete this category", "Eliminar esta categoría"
-
1
l.store "Categories", ""
-
-
# app/views/admin/categories/index.html.erb
-
1
l.store "New Category", ""
-
-
# app/views/admin/categories/new.html.erb
-
1
l.store "%s Category", ""
-
-
# app/views/admin/categories/reorder.html.erb
-
1
l.store "(Done)", "(Hecho)"
-
-
# app/views/admin/content/_attachment.html.erb
-
1
l.store "Remove", "Remover"
-
1
l.store "Currently this article has the following resources", "Este artículo tiene los siguientes recursos"
-
1
l.store "You can associate the following resources", "Puedes asociarlo con los siguientes recursos"
-
1
l.store "Really delete attachment", "¿Realmente deseas borrar este archivo?"
-
1
l.store "Add Another Attachment", "Agregar Otro Archivo"
-
-
# app/views/admin/content/_drafts.html.erb
-
1
l.store "Drafts", ""
-
-
# app/views/admin/content/_form.html.erb
-
1
l.store "Publish settings", ""
-
1
l.store "Allow comments", "Se permiten comentarios"
-
1
l.store "Allow trackbacks", "Se permiten trackbacks"
-
1
l.store "Password:", ""
-
1
l.store "Publish", "Publicar"
-
1
l.store "Excerpt", ""
-
1
l.store "Excerpts are posts summaries that are shown on your blog homepage only but won’t appear on the post itself", ""
-
1
l.store "Uploads", ""
-
1
l.store "Post settings", ""
-
1
l.store "Publish at", "Publicado el"
-
1
l.store "Permalink", "Link permanente"
-
1
l.store "Article filter", "Filtro de artículo"
-
1
l.store "Save as draft", ""
-
-
# app/views/admin/content/destroy.html.erb
-
1
l.store "Are you sure you want to delete this article", "¿Estás seguro que deseas borrar este artículo?"
-
1
l.store "Delete this article", "Eliminar este artículo"
-
1
l.store "Articles", ""
-
-
# app/views/admin/content/index.html.erb
-
1
l.store "New Article", ""
-
1
l.store "Search articles that contain ...", ""
-
1
l.store "Search", ""
-
1
l.store "Author", "Autor"
-
1
l.store "Date", ""
-
1
l.store "Feedback", ""
-
1
l.store "Filter", ""
-
1
l.store "Manage articles", ""
-
-
# app/views/admin/dashboard/_comments.html.erb
-
1
l.store "Latest Comments", ""
-
1
l.store "No comments yet", ""
-
1
l.store "By %s on %s", ""
-
-
# app/views/admin/dashboard/_inbound.html.erb
-
1
l.store "Inbound links", ""
-
1
l.store "No one made a link to you yet", ""
-
1
l.store " made a link to you saying ", ""
-
1
l.store "You have no internet connection", ""
-
-
# app/views/admin/dashboard/_overview.html.erb
-
1
l.store "This place gives you a quick overview of what happens on your Typo blog and what you can do. Maybe will you want to %s, %s or %s.", ""
-
1
l.store "update your profile or change your password", ""
-
1
l.store "You can also do a bit of design, %s or %s.", ""
-
1
l.store "change your blog presentation", ""
-
1
l.store "enable plugins", ""
-
1
l.store "write a post", ""
-
1
l.store "write a page", ""
-
-
# app/views/admin/dashboard/_popular.html.erb
-
1
l.store "Most popular", ""
-
1
l.store "Nothing to show yet", ""
-
-
# app/views/admin/dashboard/_posts.html.erb
-
1
l.store "Latest Posts", ""
-
1
l.store "No posts yet, why don't you start and write one", ""
-
-
# app/views/admin/dashboard/_typo_dev.html.erb
-
1
l.store "Latest news from the Typo development blog", ""
-
1
l.store "Oh no, nothing new", ""
-
-
# app/views/admin/dashboard/_welcome.html.erb
-
1
l.store "Welcome back, %s!", ""
-
1
l.store "%d articles and %d comments were posted since your last connexion", ""
-
1
l.store "You're running Typo %s", ""
-
1
l.store "Total posts : %d", ""
-
1
l.store "Your posts : %d", ""
-
1
l.store "Total comments : %d", ""
-
1
l.store "Spam comments : %d", ""
-
-
# app/views/admin/feedback/_button.html.erb
-
1
l.store "Select action", ""
-
1
l.store "Delete Checked Items", ""
-
1
l.store "Delete all spam", ""
-
1
l.store "Mark Checked Items as Spam", ""
-
1
l.store "Mark Checked Items as Ham", ""
-
1
l.store "All comments", ""
-
1
l.store "Limit to ham", ""
-
1
l.store "Unapproved comments", ""
-
1
l.store "Limit to spam", "Limitar a spam"
-
-
# app/views/admin/feedback/_form.html.erb
-
1
l.store "Add a comment", ""
-
1
l.store "Url", "Url"
-
-
# app/views/admin/feedback/_spam.html.erb
-
1
l.store "This comment by <strong>%s</strong> was flagged as spam, %s?", ""
-
-
# app/views/admin/feedback/article.html.erb
-
1
l.store "Comments for %s", ""
-
1
l.store "Status", "Estado"
-
1
l.store "Comment Author", ""
-
1
l.store "Comment", ""
-
-
# app/views/admin/feedback/edit.html.erb
-
1
l.store "Comments for", "Comentarios para"
-
-
# app/views/admin/feedback/index.html.erb
-
1
l.store "Search Comments and Trackbacks that contain", ""
-
1
l.store "Article", ""
-
-
# app/views/admin/pages/_form.html.erb
-
1
l.store "Online", "Online"
-
1
l.store "Page settings", ""
-
1
l.store "Permanent link", ""
-
-
# app/views/admin/pages/destroy.html.erb
-
1
l.store "Pages","Páginas"
-
1
l.store "Are you sure you want to delete the page", "¿Estás seguro que deseas eliminar esta página?"
-
1
l.store "Delete this page", "Eliminar esta página"
-
-
# app/views/admin/pages/index.html.erb
-
1
l.store "New Page", ""
-
1
l.store "Manage pages", ""
-
-
# app/views/admin/profiles/index.html.erb
-
1
l.store "Your profile", ""
-
-
# app/views/admin/resources/_mime_edit.html.erb
-
1
l.store "Content Type", "Content Type"
-
-
# app/views/admin/resources/_pages.html.erb
-
1
l.store "Previous page", "Página anterior"
-
1
l.store "Next page", "Página siguiente"
-
-
# app/views/admin/resources/_upload.html.erb
-
1
l.store "Upload a File to your Site", "Sube un Archivo a tu sitio"
-
1
l.store "File", ""
-
1
l.store "Upload", "Subir"
-
-
# app/views/admin/resources/destroy.html.erb
-
1
l.store "Are you sure you want to delete this file", "¿Estás seguro que deseas eliminar este archivo?"
-
1
l.store "Delete this file from the webserver?", "¿Eliminar este archivo del servidor?"
-
1
l.store "File Uploads", "Archivos subidos"
-
-
# app/views/admin/resources/images.html.erb
-
1
l.store "Thumbnail", ""
-
1
l.store "File Size", "Tamaño del Archivo"
-
1
l.store "Images", ""
-
1
l.store "right-click for link", ""
-
-
# app/views/admin/resources/index.html.erb
-
1
l.store "Filename", "Nombre del archivo"
-
-
# app/views/admin/settings/_submit.html.erb
-
1
l.store "Update settings", ""
-
-
# app/views/admin/settings/feedback.html.erb
-
1
l.store "Enable comments by default", "Habilitar comentarios por default"
-
1
l.store "Enable Trackbacks by default", "Habilitar Trackbacks por default"
-
1
l.store "Enable feedback moderation", "Habilitar moderación de comentarios y trackbacks"
-
1
l.store "You can enable site wide feeback moderation. If you do so, no comment or trackback will appear on your blog unless you validate it", ""
-
1
l.store "Comments filter", "Filtro de comentarios"
-
1
l.store "Enable gravatars", "Habilitar gravatars"
-
1
l.store "Show your email address", "Mostrar tu dirección de email"
-
1
l.store "Notifications", ""
-
1
l.store "Typo can notify you when new articles or comments are posted", "Typo puede notificarte cuando nuevos artículos o comentarios sean añadidos"
-
1
l.store "Source Email", "Email remitente"
-
1
l.store "Email address used by Typo to send notifications", "Dirección de email usada por Typo para enviar notificaciones"
-
1
l.store "Enabling spam protection will make typo compare the IP address of posters as well as the contents of their posts against local and remote blacklists. Good defense against spam bots", "Habilitando la protección anti-spam hará que typo compare la dirección IP del usuario así como el contenido de sus comentarios contra una lista negra remota o local. Es una buena defensa contra los robots de spam"
-
1
l.store "Enable spam protection", "Habilitar protección anti-spam"
-
1
l.store "Akismet Key", "Clave de Akismet (API key)"
-
1
l.store "Typo can (optionally) use the %s spam-filtering service. You need to register with Akismet and receive an API key before you can use their service. If you have an Akismet key, enter it here", "Typo puede (opcionalmente) usar el servicio anti-spam de %s. Necesitas registrarte en Akismet y obtener una API key antes de poder usar su servicio. Si tienes una clave de Akismet, introdúcela aquí"
-
1
l.store "Disable trackbacks site-wide", ""
-
1
l.store "This setting allows you to disable trackbacks for every article in your blog. It won't remove existing trackbacks, but it will prevent any further attempt to add a trackback anywhere on your blog.", "Esta opción te permite deshabilitar trackbacks para cada artículo en tu blog. Esto no removerá trackbacks existentes, pero impedirá cualquier intento futuro para añadir una trackback en cualquier parte de tu blog."
-
1
l.store "Disable comments after", "Deshabilitar comentarios después de"
-
1
l.store "days", "días"
-
1
l.store "Set to 0 to never disable comments", "Introducir 0 para nunca deshabilitar comentarios"
-
1
l.store "Max Links", "Máximo número de links"
-
1
l.store "Typo will automatically reject comments and trackbacks which contain over a certain amount of links in them", "Typo rechazará automáticamente los comentarios y trackbacks que contengan más de un cierto número de links en ellos"
-
1
l.store "Set to 0 to never reject comments", "Introducir 0 para nunca rechazar comentarios"
-
1
l.store "Feedback settings", ""
-
-
# app/views/admin/settings/index.html.erb
-
1
l.store "Your blog", "Tu sitio"
-
1
l.store "Blog name", "Nombre del blog"
-
1
l.store "Blog subtitle", "Subtítulo del blog"
-
1
l.store "Blog URL", "URL del blog"
-
1
l.store "Language", "Idioma" #Need translate
-
1
l.store "Allow users to register", ""
-
1
l.store "You can allow users to register to your blog. By default, they will register as contributors, an unpriviledged account level which grant them no rights but own a profile on the site. If you don't want users to register, you can thus add them by yourself in the users part of this admin.", ""
-
1
l.store "Items to display in admin lists", ""
-
1
l.store "Publishing options", ""
-
1
l.store "Display", "Mostrar"
-
1
l.store "articles on my homepage by default", "artículos en mi página de inicio por default"
-
1
l.store "articles in my news feed by default", "artículos en mi feed RSS"
-
1
l.store "Show full article on feed", "Mostrar artículo completo en el feed"
-
1
l.store "Feedburner ID", ""
-
1
l.store "General settings", "Preferencias generales"
-
1
l.store "You can use your Google Feedburner account instead of Typo feed URL. To enable this, fill this form with your Feedburner ID.", ""
-
-
# app/views/admin/settings/seo.html.erb
-
1
l.store "Search Engine Optimisation", ""
-
1
l.store "Format of permalink", ""
-
1
l.store "Google Analytics", ""
-
1
l.store "Google verification link", ""
-
1
l.store "Meta description", ""
-
1
l.store "Meta keywords", ""
-
1
l.store "Use RSS description", ""
-
1
l.store "Index categories", ""
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every category page, removing them from search engines and preventing duplicate content issues", ""
-
1
l.store "Index tags", ""
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every tags page, removing them from search engines and preventing duplicate content issues", ""
-
1
l.store "Robots.txt", ""
-
1
l.store "You robots.txt file is not writeable. Typo won't be able to write it", ""
-
1
l.store "Search Engine Optimization", ""
-
1
l.store "This will display", ""
-
1
l.store "at the bottom of each of your post in the RSS feed", ""
-
-
# app/views/admin/settings/update_database.html.erb
-
1
l.store "Information", "Información"
-
1
l.store "Current database version", "Versión actual de la base de datos"
-
1
l.store "New database version", "Nueva versión de la base de datos"
-
1
l.store "Your database supports migrations", "Tu base de datos soporta migraciones"
-
1
l.store "Needed migrations", "Migraciones necesarias"
-
1
l.store "You are up to date!", "Estás al día!"
-
1
l.store "Update database now", "Actualizar la base de datos ahora"
-
1
l.store "may take a moment", "puede tomar un momento"
-
1
l.store "Database migration", "Migración de la base de datos"
-
1
l.store "yes", "sí"
-
1
l.store "no", "no"
-
-
# app/views/admin/settings/write.html.erb
-
1
l.store "Send trackbacks", "Enviar trackbacks"
-
1
l.store "When publishing articles, Typo can send trackbacks to websites that you link to. This should be disabled for private blogs as it will leak non-public information to sites that you're discussing. For public blogs, there's no real point in disabling this.", "Cuando se publican artículos, Typo puede enviar trackbacks a sitios enlazados. Esto debería deshabilitarse para blogs privados para que no se escape información privada a sitios que estás comentando. Para blogs públicos, realmente no hay razón para deshabilitar esto."
-
1
l.store "URLs to ping automatically", "Enviar pings a URLs automáticamente"
-
1
l.store "Latitude, Longitude", "Latitud, Longitud"
-
1
l.store "your lattitude and longitude", "tu latitud y longitud"
-
1
l.store "exemple", "ejemplo"
-
1
l.store "Write", "Escribir"
-
-
# app/views/admin/sidebar/_availables.html.erb
-
1
l.store "You have no plugins installed", "No tienes plugins instalados"
-
-
# app/views/admin/sidebar/_publish.html.erb
-
1
l.store "Changes published", "Cambios publicados"
-
-
# app/views/admin/sidebar/_target.html.erb
-
1
l.store "Drag some plugins here to fill your sidebar", "Arrastra algunos plugins aquí para llenar tu barra lateral"
-
-
# app/views/admin/sidebar/index.html.erb
-
1
l.store "Drag and drop to change the sidebar items displayed on this blog. To remove items from the sidebar just click remove Changes are saved immediately, but not activated until you click the 'Publish' button", ""
-
1
l.store "Available Items", "Items disponibles"
-
1
l.store "Active Sidebar items", "Items activos de la barra lateral"
-
1
l.store "Get more plugins", ""
-
1
l.store "Sidebar", ""
-
1
l.store "Publish changes", "Publicar cambios"
-
-
# app/views/admin/tags/_form.html.erb
-
1
l.store "Display name", "Nombre para mostrar"
-
-
# app/views/admin/tags/destroy.html.erb
-
1
l.store "Are you sure you want to delete the tag", ""
-
1
l.store "Delete this tag", ""
-
-
# app/views/admin/tags/edit.html.erb
-
1
l.store "Editing ", ""
-
1
l.store "Back to tags list", ""
-
-
# app/views/admin/tags/index.html.erb
-
1
l.store "Display Name", ""
-
1
l.store "Manage tags", ""
-
-
# app/views/admin/themes/catalogue.html.erb
-
1
l.store "Sorry the theme catalogue is not available", ""
-
1
l.store "Theme catalogue", ""
-
-
# app/views/admin/themes/editor.html.erb
-
1
l.store "Theme editor", ""
-
-
# app/views/admin/themes/index.html.erb
-
1
l.store "Active theme", "Tema activo"
-
1
l.store "Get more themes", ""
-
1
l.store "You can download third party themes from officially supported %s ", ""
-
1
l.store "Typogarden", ""
-
1
l.store "To install a theme you just need to upload the theme folder into your themes directory. Once a theme is uploaded, you should see it on this page.", ""
-
1
l.store "Choose a theme", "Escoge un tema"
-
-
# app/views/admin/users/_form.html.erb
-
1
l.store "Account settings", ""
-
1
l.store "Password confirmation", "Confirmar Contraseña"
-
1
l.store "Profile", ""
-
1
l.store "User's status", ""
-
1
l.store "Active", ""
-
1
l.store "Inactive", ""
-
1
l.store "Profile Settings", ""
-
1
l.store "Firstname", ""
-
1
l.store "Lastname", ""
-
1
l.store "Nickname", ""
-
1
l.store "Editor", ""
-
1
l.store "Use simple editor", ""
-
1
l.store "Use visual rich editor", ""
-
1
l.store "Send notification messages via email", "Enviar notificaciones por email"
-
1
l.store "Send notification messages when new articles are posted", "Enviar notificaciones cuando un nuevo artículo sea publicado"
-
1
l.store "Send notification messages when comments are posted", "Enviar notificaciones cuando un nuevo comentario sea publicado"
-
1
l.store "Contact Options", ""
-
1
l.store "Your site", ""
-
1
l.store "display url on public profile", ""
-
1
l.store "Your MSN", ""
-
1
l.store "display MSN ID on public profile", ""
-
1
l.store "Your Yahoo ID", ""
-
1
l.store "display Yahoo! ID on public profile", ""
-
1
l.store "Your Jabber ID", ""
-
1
l.store "display Jabber ID on public profile", ""
-
1
l.store "Your AIM id", ""
-
1
l.store "display AIM ID on public profile", ""
-
1
l.store "Your Twitter username", ""
-
1
l.store "display twitter on public profile", ""
-
1
l.store "Tell us more about you", ""
-
-
# app/views/admin/users/destroy.html.erb
-
1
l.store "Really delete user", "¿Realmente desea eliminar este usuario?"
-
1
l.store "Yes", ""
-
1
l.store "Users", ""
-
-
# app/views/admin/users/edit.html.erb
-
1
l.store "Edit User", "Editar usuario"
-
-
# app/views/admin/users/index.html.erb
-
1
l.store "New User", "Nuevo Usuario"
-
1
l.store "Comments", ""
-
1
l.store "State", ""
-
1
l.store "%s user", ""
-
-
# app/views/admin/users/new.html.erb
-
1
l.store "Add User", ""
-
-
# app/views/articles/_article.html.erb
-
1
l.store "Posted by", "Publicado por"
-
1
l.store "Continue reading", ""
-
-
# app/views/articles/_comment.html.erb
-
1
l.store "said", "dijo"
-
1
l.store "This comment has been flagged for moderator approval. It won't appear on this blog until the author approves it", ""
-
-
# app/views/articles/_comment_box.html.erb
-
1
l.store "Your name", "Tu nombre"
-
1
l.store "Your email", "Tu email"
-
1
l.store "Your message", "Tu comentario"
-
1
l.store "Comment Markup Help", "Ayuda del marcado"
-
1
l.store "Preview comment", "Previsualizar comentario"
-
1
l.store "leave url/email", ""
-
-
# app/views/articles/_comment_failed.html.erb
-
1
l.store "Oops, something wrong happened, the comment could not be saved", ""
-
-
# app/views/articles/_trackback.html.erb
-
1
l.store "From", "De"
-
-
# app/views/articles/archives.html.erb
-
1
l.store "No articles found", "No se encontraron artículos"
-
1
l.store "posted in", ""
-
-
# app/views/articles/comment_preview.html.erb
-
1
l.store "is about to say", "está a punto de decir"
-
-
# app/views/articles/groupings.html.erb
-
1
l.store "There are", "Hay"
-
-
# app/views/articles/read.html.erb
-
1
l.store "Leave a response", "Deja un comentario"
-
1
l.store "Trackbacks", ""
-
1
l.store "Use the following link to trackback from your own site", "Usa el siguiente link para crear un trackback desde tu propio sitio"
-
1
l.store "RSS feed for this post", "Feed RSS para este artículo"
-
1
l.store "trackback uri", "trackback uri"
-
1
l.store "Comments are disabled", "Los comentarios están deshabilitados"
-
-
# app/views/authors/show.html.erb
-
1
l.store "Web site:", ""
-
1
l.store "MSN:", ""
-
1
l.store "Yahoo:", ""
-
1
l.store "Jabber:", ""
-
1
l.store "AIM:", ""
-
1
l.store "Twitter:", ""
-
1
l.store "About %s", ""
-
1
l.store "This author has not published any article yet", ""
-
-
# app/views/comments/show.html.erb
-
1
l.store "This comment has been flagged for moderator approval.", ""
-
-
# app/views/layouts/administration.html.erb
-
1
l.store "%s »", ""
-
1
l.store "is proudly powered by", ""
-
1
l.store "Dashboard", ""
-
-
# app/views/setup/index.html.erb
-
1
l.store "Welcome", ""
-
1
l.store "Welcome to your %s blog setup. Just fill in your blog title and your email, and Typo will take care of everything else", ""
-
-
# app/views/shared/_confirm.html.erb
-
1
l.store "Congratulation!", ""
-
1
l.store "You have successfully signed up", ""
-
1
l.store "<strong>Login:</strong> %s", ""
-
1
l.store "<strong>Password:</strong> %s", ""
-
1
l.store "Don't lose the mail sent at %s or you won't be able to login anymore", ""
-
1
l.store "Proceed to %s", ""
-
1
l.store "admin", ""
-
-
# app/views/shared/_search.html.erb
-
1
l.store "Live Search", ""
-
-
# test/mocks/themes/typographic/layouts/default.html.erb
-
1
l.store "Powered by %s", ""
-
1
l.store "Designed by %s ", ""
-
-
# test/mocks/themes/typographic/views/articles/_article.html.erb
-
1
l.store "Continue reading...", ""
-
1
l.store "This entry was posted on %s", ""
-
1
l.store "and %s", ""
-
1
l.store "You can follow any response to this entry through the %s", ""
-
1
l.store "Atom feed", ""
-
1
l.store "You can leave a %s", ""
-
1
l.store "or a %s from your own site", ""
-
1
l.store "Read full article", ""
-
1
l.store "comment", ""
-
1
l.store "trackback", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment.html.erb
-
1
l.store "later", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment_form.html.erb
-
1
l.store "Leave a comment", ""
-
1
l.store "Name %s", ""
-
1
l.store "enabled", ""
-
1
l.store "never displayed", ""
-
1
l.store "Website", ""
-
1
l.store "Textile enabled", ""
-
1
l.store "Markdown enabled", ""
-
1
l.store "required", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment_list.html.erb
-
1
l.store "No comments", ""
-
-
# test/mocks/themes/typographic/views/shared/_search.html.erb
-
1
l.store "Searching", ""
-
-
# themes/dirtylicious/layouts/default.html.erb
-
1
l.store "Home", ""
-
1
l.store "About", ""
-
1
l.store "Designed by %s ported to typo by %s ", ""
-
-
# themes/scribbish/layouts/default.html.erb
-
1
l.store "styled with %s", ""
-
-
# themes/scribbish/views/articles/_article.html.erb
-
1
l.store "Meta", ""
-
1
l.store "permalink", ""
-
-
# themes/true-blue-3/helpers/theme_helper.rb
-
1
l.store "You are here: ", ""
-
1
l.store "%d comment", ""
-
-
# themes/true-blue-3/views/articles/_article.html.erb
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M", ""
-
-
# themes/true-blue-3/views/articles/_comment.html.erb
-
1
l.store "By", ""
-
1
l.store "later:", ""
-
-
# themes/true-blue-3/views/articles/_comment_form.html.erb
-
1
l.store "Email address", ""
-
1
l.store "Your website", ""
-
-
# themes/true-blue-3/views/articles/read.html.erb
-
1
l.store "If you liked this article you can %s", ""
-
1
l.store "add me to Twitter", ""
-
1
l.store "Trackbacks for", "Trackbacks para"
-
-
# themes/true-blue-3/views/articles/search.html.erb
-
1
l.store "Search results for:", ""
-
-
# themes/true-blue-3/views/categories/index.html.erb
-
1
l.store "Read all articles in %s", ""
-
-
# themes/true-blue-3/views/categories/show.html.erb
-
1
l.store "Previous", ""
-
1
l.store "Next", ""
-
-
# vendor/plugins/archives_sidebar/views/content.rhtml
-
1
l.store "Archives", ""
-
-
# vendor/plugins/authors_sidebar/views/content.rhtml
-
1
l.store "Authors", ""
-
-
# vendor/plugins/xml_sidebar/views/content.rhtml
-
1
l.store "Syndicate", ""
-
1
l.store "Category %s", ""
-
1
l.store "Tag %s", ""
-
-
# Obsolete translations
-
1
l.store "%d Articles", ["Artículo", "%d Artículos"]
-
1
l.store "%d Categories", ["Categorí", "%d Categorías"]
-
1
l.store "%d Comments", ["Comentario", "%d Comentarios"]
-
1
l.store "%d Trackbacks", ["Trackback", "%d Trackbacks"]
-
1
l.store "%d Users", ["Usuario", "%d Usuarios"]
-
1
l.store "Action", "Acción"
-
1
l.store "Activate", "Activar"
-
1
l.store "Add MetaData", "Agregar metadata"
-
1
l.store "Add category", "Agregar categoría"
-
1
l.store "Add new user", "Agregar un nuevo usuario"
-
1
l.store "Add pattern", "Agregar patrón"
-
1
l.store "Allow non-ajax comments", "Permitir comentarios sin Ajax"
-
1
l.store "Are you sure you want to delete this filter", "¿Estás seguro que deseas eliminar este filtro?"
-
1
l.store "Are you sure you want to delete this item?", "¿Estás seguro que quieres borrar este item?"
-
1
l.store "Article Attachments", "Archivos adjuntos"
-
1
l.store "Article Body", "Cuerpo del Artículo"
-
1
l.store "Article Content", "Contenido del Artículo"
-
1
l.store "Article Options", "Opciones del Artículo"
-
1
l.store "Articles in", "Artículos en"
-
1
l.store "Attachments", "Archivos adjuntos"
-
1
l.store "Back to the blog", "Regresar al blog"
-
1
l.store "Blacklist", "Lista negra"
-
1
l.store "Blacklist Patterns", "Lista negra"
-
1
l.store "Blog settings", "Preferencias del Blog"
-
1
l.store "Body", "Comentario"
-
1
l.store "Cache", "Caché"
-
1
l.store "Category title", "Título de la categoría"
-
1
l.store "Choose password", "Escoge una contraseña"
-
1
l.store "Comments and Trackbacks for", "Comentarios y Trackbacks para"
-
1
l.store "Confirm password", "Confirma tu contraseña"
-
1
l.store "Copyright Information", "Copyright"
-
1
l.store "Create new Blacklist", "Crearea unei noi liste negre"
-
1
l.store "Create new category", "Crear nueva categoría"
-
1
l.store "Create new page", "Crear una nueva página"
-
1
l.store "Create new text filter", "Crea un nuevo filtro de texto"
-
1
l.store "Creating comment", "Añadiendo comentario"
-
1
l.store "Creating text filter", "Creando filtro de texto"
-
1
l.store "Creating trackback", "Creando trackback"
-
1
l.store "Creating user", "Creando usuario"
-
1
l.store "Currently this article is listed in following categories", "Este artílo se encuentra en las siguientes categorís"
-
1
l.store "Customize Sidebar", "Personaliza la barra lateral"
-
1
l.store "Delete this filter", "Eliminar este filtro"
-
1
l.store "Design", "Diseño"
-
1
l.store "Desired login", "Usuario deseado"
-
1
l.store "Discuss", "Discusión"
-
1
l.store "Do you want to go to your blog?", "¿Quieres ir a tu blog?"
-
1
l.store "Duration", "Duración"
-
1
l.store "Edit Article", "Editar Artículo"
-
1
l.store "Edit MetaData", "Editar metadata"
-
1
l.store "Edit this article", "Editar este artículo"
-
1
l.store "Edit this category", "Editar esta categoría"
-
1
l.store "Edit this filter", "Editar este filtro"
-
1
l.store "Edit this page", "Editar esta página"
-
1
l.store "Edit this trackback", "Editar este trackback"
-
1
l.store "Editing User", "Editando usuario"
-
1
l.store "Editing category", "Editando categoría"
-
1
l.store "Editing comment", "Editando comentario"
-
1
l.store "Editing page", "Editando página"
-
1
l.store "Editing pattern", "Editando patrón"
-
1
l.store "Editing textfilter", "Editando filtro de texto"
-
1
l.store "Editing trackback", "Editando trackback"
-
1
l.store "Empty Fragment Cache", "Limpiar el caché por fragmentos"
-
1
l.store "Explicit", "Explícito"
-
1
l.store "Extended Content", "Contenido Extendido"
-
1
l.store "Feedback Search", "Búsqueda de comentarios"
-
1
l.store "Filters", "Filtros"
-
1
l.store "General Settings", "Preferencias generales"
-
1
l.store "IP", "Dirección IP"
-
1
l.store "Jabber", "Jabber"
-
1
l.store "Jabber account", "Cuenta de Jabber"
-
1
l.store "Jabber account to use when sending Jabber notifications", "Cuenta de Jabber usada cuando se envían notificaciones por Jabber"
-
1
l.store "Jabber password", "Contraseña de Jabber"
-
1
l.store "Key Words", "Palabras clave"
-
1
l.store "Last updated", "Última actualización"
-
1
l.store "Limit to unconfirmed", "Limitar a no confirmados"
-
1
l.store "Limit to unconfirmed spam", "Limitar a spam no confirmado"
-
1
l.store "Location", "Ubicación"
-
1
l.store "Logoff", "Salir"
-
1
l.store "Macro Filter Help", "Ayuda de Macro Filtros"
-
1
l.store "Macros", "Macros"
-
1
l.store "Manage", "Administrar"
-
1
l.store "Manage Articles", "Administrar Artículos"
-
1
l.store "Manage Categories", "Administrar categorías"
-
1
l.store "Manage Pages", "Administrar Páginas"
-
1
l.store "Manage Resources", "Administrar Recursos"
-
1
l.store "Manage Text Filters", "Configurar Filtros de Texto"
-
1
l.store "Markup", "Marcado"
-
1
l.store "Markup type", "Tipo de marcado"
-
1
l.store "MetaData", "Metadata"
-
1
l.store "Not published by Apple", "No publicado por Apple"
-
1
l.store "Notification", "Notificación"
-
1
l.store "Notified", "Notificado"
-
1
l.store "Notify on new articles", "Notificar para nuevos artículos"
-
1
l.store "Notify on new comments", "Notificar para nuevos comentarios"
-
1
l.store "Notify via email", "Notificar por email"
-
1
l.store "Number of Articles", "Número de Artículos"
-
1
l.store "Number of Comments", "Número de Comentarios"
-
1
l.store "Offline", "Offline"
-
1
l.store "Older posts", "Artículos anteriores"
-
1
l.store "Optional Name", "Nombre opcional"
-
1
l.store "Page Body", "Cuerpo de la Página"
-
1
l.store "Page Options", "Opciones de la página"
-
1
l.store "Parameters", "Parámetros"
-
1
l.store "Password Confirmation", "Confirmar Contraseña"
-
1
l.store "Pattern", "Patrón"
-
1
l.store "Pictures from", "Imágenes de"
-
1
l.store "Post title", "Título del artículo"
-
1
l.store "Post-processing filters", "Filtro post-procesado"
-
1
l.store "Posted at", "Publicado el"
-
1
l.store "Posted date", "Fecha de publicación"
-
1
l.store "Preview Article", "Previsualizar Artículo"
-
1
l.store "Read", "Leer"
-
1
l.store "Read more", "Leer más"
-
1
l.store "Rebuild cached HTML", "Reconstruir HTML cacheado"
-
1
l.store "Recent comments", "Comentarios recientes"
-
1
l.store "Recent trackbacks", "Trackbacks recientes"
-
1
l.store "Regex", "Expresión regular"
-
1
l.store "Remove iTunes Metadata", "Remover metadata de iTunes"
-
1
l.store "Resource MetaData", "Metadata"
-
1
l.store "Resource Settings", "Preferencias de recursos"
-
1
l.store "Save Settings", "Guardar preferencias"
-
1
l.store "See help text for this filter", "Ver ayuda para este filtro"
-
1
l.store "Set iTunes metadata for this enclosure", "Introduce la metada de iTunes para este contenido"
-
1
l.store "Setting for channel", "Utilizado para el canal"
-
1
l.store "Settings", "Configuración"
-
1
l.store "Show Help", "Mostrar Ayuda"
-
1
l.store "Show this article", "Mostrar este artículo"
-
1
l.store "Show this category", "Mostrar esta categoría"
-
1
l.store "Show this comment", "Mostrar este comentario"
-
1
l.store "Show this page", "Mostrar esta página"
-
1
l.store "Show this pattern", "Mostrar este patrón"
-
1
l.store "Show this user", "Mostrar este usuario"
-
1
l.store "Spam Protection", "Protección anti-spam"
-
1
l.store "Spam protection", "Protección anti-spam"
-
1
l.store "String", "Cadena"
-
1
l.store "Subtitle", "Subtítulo"
-
1
l.store "Summary", "Resumen"
-
1
l.store "Text Filter Details", "Detalles del filtro de texto"
-
1
l.store "Text Filters", "Filtros de Texto"
-
1
l.store "Textfilter", "Filtro de texto"
-
1
l.store "The below settings act as defaults when you choose to publish an enclosure with iTunes metadata", "Las preferencias debajo son tomadas como predeterminadas cuando publicas contenido protegido con metadata de iTunes"
-
1
l.store "Things you can do", "Cosas que puedes hacer"
-
1
l.store "This option let you choose between the simple admin interface or the complete one, displaying much more options and therefore more complicated to use. For advanced users only!", ""
-
1
l.store "Type", "Tipo"
-
1
l.store "Typo admin", "Administrar Typo"
-
1
l.store "Upload a new File", "Subir un nuevo archivo"
-
1
l.store "Upload a new Resource", "Subir un nuevo Recurso"
-
1
l.store "Uploaded", "Subido"
-
1
l.store "User's articles", "Artículos del usuario"
-
1
l.store "View article on your blog", "Ver artículo en tu blog"
-
1
l.store "View comment on your blog", "Ver comentario en tu blog"
-
1
l.store "View page on your blog", "Ver página en tu blog"
-
1
l.store "Which settings group would you like to edit", "¿Qué grupo de preferencias te gustaría editar?"
-
1
l.store "Write a Page", "Escribir una página"
-
1
l.store "Write an Article", "Escribir un arículo"
-
1
l.store "You are now logged out of the system", "Has salido del sistema"
-
1
l.store "You can add it to the following categories", "Puedes añadirlo a las siguientes categorías"
-
1
l.store "You can enable site wide feedback moderation. If you do so, no comment or trackback will appear on your blog unless you validate it", "Puedes habilitar la moderación de comentarios y trackbacks. Si lo haces, ningún comentario o trackback aparecerá en tu blog hasta que lo hayas validado"
-
1
l.store "You can optionally disable non-Ajax comments. Typo will always use Ajax for comment submission if Javascript is enabled, so non-Ajax comments are either from spammers or users without Javascript.", "Puedes deshabilitar los comentarios sin Ajax. Typo usará siempre Ajax para añadir un comentario si Javascript está habilitado, así que los comentarios sin Ajax son de spammers o de usuarios sin Javascript."
-
1
l.store "by", "por"
-
1
l.store "on", "en"
-
1
l.store "seperate with spaces", "separar con espacios"
-
1
l.store "via email", "por email"
-
1
l.store "with %s Famfamfam iconset %s", "con el iconset %s de Famfamfam %s"
-
1
l.store "your blog", "tu blog"
-
end
-
#coding: utf-8
-
1
Localization.define("fr_FR") do |l|
-
# app/controllers/accounts_controller.rb
-
1
l.store "Login successful", "Connexion réussie"
-
1
l.store "Login unsuccessful", "Échec de la connexion"
-
1
l.store "An email has been successfully sent to your address with your new password", "Un courrier vous a été envoyé avec votre nouveau mot de passe"
-
1
l.store "Oops, something wrong just happened", "Désolé, une erreur vient de se produire"
-
1
l.store "Successfully logged out", "Vous êtes maintenant déconnecté"
-
1
l.store "login", "identifiant"
-
1
l.store "signup", "s'identifier"
-
1
l.store "Recover your password", "Récupération d'un mot de passe perdu"
-
-
# app/controllers/admin/cache_controller.rb
-
1
l.store "Cache was successfully sweeped", "Le cache a été vidé avec succès"
-
1
l.store "Oops, something wrong happened. Cache could not be cleaned", "Oops, un problème s'est produit et le cache n'a pas pu être vidé correctement"
-
-
# app/controllers/admin/categories_controller.rb
-
1
l.store "Category was successfully saved.", "La catégorie a été enregistrée avec succès"
-
1
l.store "Category could not be saved.", "La catégorie n'a pas pu être sauvée"
-
-
# app/controllers/admin/content_controller.rb
-
1
l.store "Error, you are not allowed to perform this action", "Erreur, vous n'avez pas les droits requis pour effectuer cette action"
-
1
l.store "This article was deleted successfully", "Cet article a été supprimé avec succès"
-
1
l.store "Preview", "Prévisualiser "
-
1
l.store "Article was successfully created", "Cet article a été créé avec succès"
-
1
l.store "Article was successfully updated.", "Cet article a été mis à jour avec succès"
-
-
# app/controllers/admin/dashboard_controller.rb
-
1
l.store "You are late from at least one major version of Typo. You should upgrade immediately. Download and install %s", "Vous avez au moins une version majeure de Typo de retard. Vous devriez immédiatement vous mettre à jour. Téléchargez et installez %s"
-
1
l.store "the latest Typo version", "la dernière version de Typo"
-
1
l.store "There's a new version of Typo available which may contain important bug fixes. Why don't you upgrade to %s ?", "Une nouvelle version de Typo est disponible. Celle-ci contient probablement d'importants correctifs. Pourquoi ne téléchargeriez-vous pas %s"
-
1
l.store "There's a new version of Typo available. Why don't you upgrade to %s ?", "Une nouvelle version de Typo est disponible. Pouquoi n'installeriez-vous pas %s"
-
-
# app/controllers/admin/feedback_controller.rb
-
1
l.store "Deleted", "Supprimé"
-
1
l.store "Not found", "Introuvable"
-
1
l.store "Deleted %d item(s)", "%d commentaires ont été supprimés"
-
1
l.store "Marked %d item(s) as Ham", "%d commentaires ont été validés"
-
1
l.store "Marked %d item(s) as Spam", "%d commentaires ont été marqués comme spam"
-
1
l.store "Confirmed classification of %s item(s)", "La classification de %d commentaires a été validée"
-
1
l.store "Not implemented", "Non implémenté"
-
1
l.store "All spam have been deleted", "Tout le spam a été supprimé"
-
1
l.store "Comment was successfully created.", "Commentaire créé avec succès."
-
1
l.store "Comment was successfully updated.", "Commentaire mis à jour avec succès."
-
-
# app/controllers/admin/pages_controller.rb
-
1
l.store "Page was successfully created.", "Cette page a été créée avec succès"
-
1
l.store "Page was successfully updated.", "Cette page a été mise à jour avec succès"
-
-
# app/controllers/admin/post_types_controller.rb
-
1
l.store "Post Type was successfully saved.", "Le type d'article a été sauvé avec succès"
-
1
l.store "Post Type could not be saved.", "Le type d'article n'a pas pu être sauvé"
-
-
# app/controllers/admin/profiles_controller.rb
-
1
l.store "User was successfully updated.", "L'utilisateur a été mis à jour avec succès."
-
-
# app/controllers/admin/redirects_controller.rb
-
1
l.store "Redirection was successfully deleted.", "La redirection a été supprimée avec succès."
-
1
l.store "Redirection was successfully saved.", "La redirection a été enregistrée avec succès."
-
1
l.store "Redirection could not be saved.", "La redirection n'a pas pu être enregistrée."
-
-
# app/controllers/admin/resources_controller.rb
-
1
l.store "complete", "fini"
-
1
l.store "File uploaded: ", "Fichier envoyé: "
-
1
l.store "Unable to upload", "impossible d'envoyer"
-
1
l.store "Metadata was successfully updated.", "Les métadonnées ont été mises à jour avec succès."
-
1
l.store "Not all metadata was defined correctly.", "Quelques métadonnées n'ont pas été définies correctement."
-
-
# app/controllers/admin/seo_controller.rb
-
1
l.store "config updated.", "Configuration mise à jour."
-
-
# app/controllers/admin/settings_controller.rb
-
1
l.store "Please review and save the settings before continuing", "SVP vérifiez et enregistrez votre configuration avant de continuer"
-
-
# app/controllers/admin/sidebar_controller.rb
-
1
l.store "It seems something went wrong. Maybe some of your sidebars are actually missing and you should either reinstall them or remove them manually", "Une erreur s'est produite. Un ou plusieurs plugins sont probablement manquants ou en erreur. Peut-être devriez-vous les supprimer ou les réinstaller"
-
-
# app/controllers/admin/tags_controller.rb
-
1
l.store "Tag was successfully updated.", "Le label a été mis à jour avec succès"
-
-
# app/controllers/admin/themes_controller.rb
-
1
l.store "Theme changed successfully", "Le thème a été changé avec succès"
-
-
# app/controllers/admin/users_controller.rb
-
1
l.store "User was successfully created.", "L'utilisateur a été créé avec succès."
-
-
# app/controllers/application_controller.rb
-
1
l.store "Localization.rtl", ""
-
-
# app/controllers/articles_controller.rb
-
1
l.store "No posts found...", "Aucun article n'a été trouvé"
-
-
# app/controllers/grouping_controller.rb
-
1
l.store "page", "page"
-
-
# app/helpers/accounts_helper.rb
-
1
l.store "Create an account", "Créer un compte"
-
1
l.store "I've lost my password", "J'ai perdu mon mot de passe"
-
-
# app/helpers/admin/base_helper.rb
-
1
l.store "Cancel", "Annuler"
-
1
l.store "Store", "Stocker"
-
1
l.store "delete", "supprimer"
-
1
l.store "Delete content", "Supprimer le contenu"
-
1
l.store "Are you sure?", "Êtes-vous certain ?"
-
1
l.store "none", ""
-
1
l.store "Please select", "Veuillez sélectionner"
-
1
l.store "There are no %s yet. Why don't you start and create one?", "Il n'y a pas encore de %s, pourquoi ne pas en créer un ? "
-
1
l.store "Save", "Sauver"
-
1
l.store "or", "ou"
-
1
l.store "Short url:", ""
-
1
l.store "Edit", "Éditer"
-
1
l.store "Delete", "Supprimer"
-
1
l.store "Show", "Affichage"
-
1
l.store "Published", "Publié"
-
1
l.store "Draft", ""
-
1
l.store "Withdrawn", ""
-
1
l.store "Publication pending", ""
-
1
l.store "Show help on Typo macros", "Afficher l'aide sur les macros Typo"
-
1
l.store "Update settings", "Mettre les paramètres à jour"
-
1
l.store "Back to list", ""
-
1
l.store "Name", "Titre"
-
1
l.store "Description", "Description"
-
1
l.store "Tag", "Label"
-
-
# app/helpers/admin/categories_helper.rb
-
1
l.store "no articles", "aucun article"
-
1
l.store "1 article", "1 article"
-
1
l.store "%d articles", "%d articles"
-
-
# app/helpers/admin/content_helper.rb
-
1
l.store "Destroy this draft", "Supprimer ce brouillon"
-
1
l.store "Article type", ""
-
1
l.store "Default", ""
-
-
# app/helpers/admin/feedback_helper.rb
-
1
l.store "Show conversation", "Afficher le fil"
-
1
l.store "Flag as %s", "Marquer comme %s"
-
-
# app/helpers/application_helper.rb
-
1
l.store "%%d. %%b", ""
-
1
l.store "Are you sure you want to delete this %s?", ""
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M:%%S GMT", ""
-
1
l.store "%d comments", "%d commentaires"
-
1
l.store "no comments", "aucun commentaire"
-
1
l.store "1 comment", "1 commentaire"
-
1
l.store "no trackbacks", "aucun rétrolien"
-
1
l.store "1 trackback", "1 rétrolien"
-
1
l.store "%d trackbacks", "%d rétroliens"
-
1
l.store "at", ""
-
-
# app/models/blog.rb
-
1
l.store "You need a permalink format with an identifier : %%title%%", ""
-
1
l.store "Can't end in .rss or .atom. These are reserved to be used for feed URLs", "Ne peut pas se terminer par .rss ou .atom. Cette extension est réservée aux flux de syndication"
-
-
# app/models/post_type.rb
-
1
l.store "This article type already exists", ""
-
-
# app/views/accounts/login.html.erb
-
1
l.store "Login", "Identifiant"
-
1
l.store "password", "Mot de passe"
-
1
l.store "Remember me", "Rester connecté"
-
-
# app/views/accounts/recover_password.html.erb
-
1
l.store "Reset my password", "Me renvoyer un mot de passe"
-
1
l.store "Username or email", "Identifiant ou email"
-
-
# app/views/accounts/signup.html.erb
-
1
l.store "Username", "Identifiant"
-
1
l.store "Email", "Email"
-
1
l.store "Signup", "S'inscrire"
-
-
# app/views/admin/cache/index.html.erb
-
1
l.store "To save resources Typo caches content in static files. Cache is cleared each time something gets published. You may however want to clear the cache by yourself", "Afin d'économiser des ressources, Typo génère des fichiers statiques avec votre contenu. Ces fichiers sont supprimés lors d'une nouvelle publication. Vous pouvez cependant les effacer vous même."
-
1
l.store "There are currently %d files in cache for a total amount of %d Kb", "Il y a actuellement %d fichiers en cache pour un total de %d kilo octets."
-
1
l.store "Sweep cache", "Vider le cache"
-
1
l.store "Cache", "Cache"
-
-
# app/views/admin/categories/new.html.erb
-
1
l.store "Categories", "Catégories"
-
1
l.store "Keywords", "Mots clés"
-
1
l.store "Permalink", "Lien permanent"
-
1
l.store "Your category slug. Leave empty if you don't know what to put here", ""
-
1
l.store "Title", "Titre"
-
-
# app/views/admin/categories/new.js.erb
-
1
l.store "%s Category", "%s catégories"
-
1
l.store "close", ""
-
-
# app/views/admin/content/_attachment.html.erb
-
1
l.store "Remove", "Supprimer"
-
1
l.store "Currently this article has the following resources", "Les fichiers suivants sont actuellement liés à ce billet"
-
1
l.store "You can associate the following resources", "Vous pouvez y lier les fichiers suivants"
-
1
l.store "Really delete attachment", "Voulez-vous vraiment supprimer la pièce jointe"
-
1
l.store "Add Another Attachment", "Ajouter une autre pièce jointe"
-
-
# app/views/admin/content/_categories.html.erb
-
1
l.store "New Category", "Nouvelle catégorie"
-
-
# app/views/admin/content/_form.html.erb
-
1
l.store "Publish settings", "Paramètres de publication"
-
1
l.store "Status:", ""
-
1
l.store "Allow trackbacks", "Autoriser les rétroliens"
-
1
l.store "Allow comments", "Autoriser les commentaires"
-
1
l.store "Publish <strong>now</strong>", ""
-
1
l.store "Visibility:", ""
-
1
l.store "Password:", "Mot de passe"
-
1
l.store "Permalink:", ""
-
1
l.store "Article filter", "Mise en forme des billets"
-
1
l.store "Publish", "Publier"
-
1
l.store "Tags", "Labels"
-
1
l.store "Excerpt", "Extrait"
-
1
l.store "Excerpts are posts summaries that are shown on your blog homepage only but won’t appear on the post itself", "Les résumés vous permettent d'afficher un texte descriptif de votre article à la place de ce dernier sur la page d'accueil de votre blog"
-
1
l.store "Uploads", "Pièces jointes"
-
1
l.store "Save as draft", "Sauver comme brouillon"
-
-
# app/views/admin/content/index.html.erb
-
1
l.store "New Article", "Nouvel article"
-
1
l.store "Search", "Chercher"
-
1
l.store "All articles", ""
-
1
l.store "Drafts", "Brouillons"
-
1
l.store "Filter", "Filtrer"
-
1
l.store "Author", "Auteur"
-
1
l.store "Date", "Date"
-
1
l.store "Feedback", "Commentaires"
-
1
l.store "Manage articles", "Gestion des articles"
-
-
# app/views/admin/content/new.html.erb
-
1
l.store "New article", ""
-
-
# app/views/admin/dashboard/_comments.html.erb
-
1
l.store "Latest Comments", "Derniers commentaires"
-
1
l.store "No comments yet", "Aucun commentaire pour l'instant"
-
1
l.store "By", "Par"
-
-
# app/views/admin/dashboard/_inbound.html.erb
-
1
l.store "Inbound links", "Liens entrants"
-
1
l.store "No one made a link to you yet", "Personne n'a fait de lien vers votre blog"
-
1
l.store "made a link to you on", ""
-
1
l.store "You have no internet connection", "Vous n'avez pas de connexion à internet"
-
-
# app/views/admin/dashboard/_overview.html.erb
-
1
l.store "This place gives you a quick overview of what happens on your Typo blog and what you can do. Maybe will you want to %s, %s or %s.", "Voici un rapide aperçu de ce que peut faire votre blog Typo. Peux-être voulez vous %s, %s ou %s"
-
1
l.store "update your profile or change your password", "mettre votre profil à jour ou changer votre mot de passe"
-
1
l.store "You can also do a bit of design, %s or %s.", "Vous pouvez également faire un peu de personnalisation, %s, %s"
-
1
l.store "change your blog presentation", "changer l'apparence de votre blog"
-
1
l.store "enable plugins", "activer des plugins"
-
1
l.store "If you need help, %s. You can also %s to customize your Typo blog.", ""
-
1
l.store "write a post", "écrire un article"
-
1
l.store "write a page", "publier une page statique"
-
1
l.store "read our documentation", "consulter notre documentation"
-
1
l.store "download some plugins", "installer des plugins"
-
-
# app/views/admin/dashboard/_popular.html.erb
-
1
l.store "Most popular", "Billets les plus populaires"
-
1
l.store "Nothing to show yet", "Rien à afficher pour l'instant"
-
-
# app/views/admin/dashboard/_posts.html.erb
-
1
l.store "Latest Posts", "Derniers articles"
-
1
l.store "No posts yet, why don't you start and write one", "Vous n'avez encore écrit aucun article, pourquoi ne pas commencer par là"
-
-
# app/views/admin/dashboard/_typo_dev.html.erb
-
1
l.store "Latest news from the Typo development blog", "Dernières nouvelles du blog officiel de Typo"
-
1
l.store "Oh no, nothing new", "Non, rien de nouveau"
-
-
# app/views/admin/dashboard/_welcome.html.erb
-
1
l.store "Welcome back, %s!", "Bienvenue, %s !"
-
1
l.store "%d articles and %d comments were posted since your last connexion", "Depuis votre dernière connexion, %d articles et %d commentaires ont été publiés"
-
1
l.store "You're running Typo %s", "Vous utilisez Typo %s"
-
1
l.store "Content", "Contenu"
-
1
l.store "Total posts:", "Nombre total d'articles :"
-
1
l.store "Your posts:", "Vos articles :"
-
1
l.store "Categories:", ""
-
1
l.store "Total comments:", "Nombre total de commentaires :"
-
1
l.store "Spam comments:", "Nombre total de spam :"
-
1
l.store "In your spam queue:", "En attente de modération :"
-
-
# app/views/admin/feedback/_button.html.erb
-
1
l.store "Select action", "Choisir de..."
-
1
l.store "Delete Checked Items", "Supprimer les commentaires sélectionnés"
-
1
l.store "Delete all spam", "Supprimer tout le spam"
-
1
l.store "Mark Checked Items as Spam", "Marquer ces commentaires comme du spam"
-
1
l.store "Mark Checked Items as Ham", "Valider ces commentaires"
-
1
l.store "Submit", "Envoyer"
-
-
# app/views/admin/feedback/_spam.html.erb
-
1
l.store "This comment by <strong>%s</strong> was flagged as spam, %s?", "Ce commentaire de <strong>%s</strong> a été marqué comme spam, %s ?"
-
-
# app/views/admin/feedback/article.html.erb
-
1
l.store "Comments for %s", "Commentaire sur %s"
-
1
l.store "Add a comment", "Ajouter un commentaire"
-
1
l.store "Status", "État"
-
1
l.store "Comment Author", "Auteur du commentaire"
-
1
l.store "Comment", "Commentaire"
-
1
l.store "Url", "Site"
-
-
# app/views/admin/feedback/index.html.erb
-
1
l.store "All", ""
-
1
l.store "Unapproved comments", "Commentaires non validés"
-
1
l.store "Ham", "Désirable"
-
1
l.store "Spam", "Spam"
-
1
l.store "Presumed ham", ""
-
1
l.store "Presumed spam", ""
-
1
l.store "Article", "Article"
-
1
l.store "Select all", ""
-
-
# app/views/admin/pages/_form.html.erb
-
1
l.store "Online", "En ligne"
-
1
l.store "Page settings", "Paramètres de la page"
-
1
l.store "Permanent link", "Lien permanent"
-
-
# app/views/admin/pages/index.html.erb
-
1
l.store "New Page", "Nouvelle page"
-
1
l.store "Manage pages", "Administrer les pages"
-
-
# app/views/admin/post_types/new.html.erb
-
1
l.store "Post Types", ""
-
1
l.store "Template name", ""
-
1
l.store "Typo default post type", ""
-
1
l.store "The template name is the filename Typo will look for when calling an article of that type. It should be in your theme under views/articles/template name.html.erb", ""
-
-
# app/views/admin/profiles/index.html.erb
-
1
l.store "Your profile", "Votre profil"
-
-
# app/views/admin/redirects/new.html.erb
-
1
l.store "Redirects", ""
-
1
l.store "From", "De"
-
1
l.store "Leave empty to shorten a link", "Laissez vide pour créer un lien court"
-
1
l.store "To", "Vers"
-
-
# app/views/admin/resources/_pages.html.erb
-
1
l.store "Previous page", "Page précédente"
-
1
l.store "Next page", "Page suivante"
-
-
# app/views/admin/resources/_upload.html.erb
-
1
l.store "Upload a File to your Site", "Envoyer un fichier sur votre site"
-
1
l.store "Upload", "Ajouter un fichier joint"
-
-
# app/views/admin/resources/destroy.html.erb
-
1
l.store "Are you sure you want to delete this file", "Êtes-vous certain de vouloir supprimer ce fichier"
-
1
l.store "Delete this file from the webserver?", "Supprimer complètement ce fichier du site ?"
-
1
l.store "File Uploads", "Ajout de fichiers"
-
-
# app/views/admin/resources/index.html.erb
-
1
l.store "Filename", "Fichier"
-
1
l.store "Content Type", "Type de contenu"
-
1
l.store "File Size", "Taille du fichier"
-
1
l.store "Thumbnail", "Miniatures"
-
1
l.store "Medium size", "Taille moyenne"
-
1
l.store "Original size", "Fichier original"
-
1
l.store "Files", "Fichiers"
-
1
l.store "right-click for link", "clic droit pour le lien"
-
-
# app/views/admin/seo/index.html.erb
-
1
l.store "General settings", "Options générales"
-
1
l.store "Use meta keywords", "Utiliser les meta mots-clés"
-
1
l.store "Meta description", "Meta description"
-
1
l.store "Meta keywords", "Meta mots-clés"
-
1
l.store "Use RSS description", "Utilisation de la description RSS"
-
1
l.store "RSS description message", "Message de description du flux RSS"
-
1
l.store "Indexing", "Indexation"
-
1
l.store "Do not index categories", "Ne pas indexer les catégories"
-
1
l.store "Checking this box will add <code>noindex, follow</code> meta tags in every category page, removing them from search engines and preventing duplicate content issues", "Sélectionner cette option ajoutera le métalabel <code>noindex, follow</code> dans toutes les pages de chaque categorie. Cela les enlevera des moteurs de recherches et préviendra ainsi des problèmes de contenu dupliqué."
-
1
l.store "Do not index tags", "Ne pas indexer les labels"
-
1
l.store "Checking this box will add <code>noindex, follow</code> meta tags in every tags page, removing them from search engines and preventing duplicate content issues", "Sélectionner cette option ajoutera le métalabel <code>noindex, follow</code> dans toutes les pages de chaque label. Cela les enlevera des moteurs de recherches et préviendra ainsi des problèmes de contenu dupliqué."
-
1
l.store "Robots.txt", "Robots.txt"
-
1
l.store "You robots.txt file is not writeable. Typo won't be able to write it", "Typo ne peut pas écrire dans votre fichier robots.txt."
-
1
l.store "Use dofollow in comments", "Mettre les commentaires en dofollow"
-
1
l.store "Maybe you want to moderate feedbacks when turning this on", "Si vous activez cette option, peut-être devriez-vous également activer la modération des commentaires."
-
1
l.store "Use canonical URL", "Utiliser les URL canoniques"
-
1
l.store "Read more about %s", "En savoir plus à propos de %s"
-
1
l.store "Google", "Google"
-
1
l.store "Google Analytics", "Google Analytics"
-
1
l.store "Google Webmaster Tools validation link", "Lien de validation des Google Webmaster Tools."
-
1
l.store "Custom tracking code", "Code de tracking personnalisé"
-
1
l.store "Global settings", "Options générales"
-
1
l.store "This will display", "Cela affichera"
-
1
l.store "at the bottom of each of your post in the RSS feed", "en bas de chacun de vos articles sur le flux RSS"
-
-
# app/views/admin/seo/permalinks.html.erb
-
1
l.store "Typo offers you the ability to create a custom URL structure for your permalinks and archives. This can improve the aesthetics, usability, and forward-compatibility of your links.", ""
-
1
l.store "Here are some examples to get you started.", "Typo vous offre la possibilité de créer une structure d'URL personnalisée pour vos liens permanents et vos archives. Cela peut vous permettre d'améliorer l'esthétique, l'utilisabilité et la viralité de vos liens."
-
1
l.store "Permalink format", "Format des permaliens"
-
1
l.store "Date and title", "Date et titre"
-
1
l.store "Month and title", "Mois et titre"
-
1
l.store "Title only", "Titre uniquement"
-
1
l.store "You can custom your URL structure using the following tags:", "Vous pouvez personnaliser la structure de vos URL à l'aide des tags suivats:"
-
1
l.store "your article slug. <strong>Using this slug is mandatory</strong>.", "le permalien de votre article <strong>ce champ est obligatoire</strong>"
-
1
l.store "your article year of publication.", "L'année de publication de votre article."
-
1
l.store "your article month of publication.", "Le mois de publication de votre article."
-
1
l.store "your article day of publication.", "Le jour de publication de votre article."
-
1
l.store "Permalinks", "Permaliens"
-
-
# app/views/admin/seo/titles.html.erb
-
1
l.store "Title settings", "Paramétrage des titres"
-
1
l.store "Home", "Accueil"
-
1
l.store "Title template", "Titres"
-
1
l.store "Description template", "Descriptions"
-
1
l.store "Articles", "Articles"
-
1
l.store "Pages","Pages"
-
1
l.store "Paginated archives", "Archives paginées"
-
1
l.store "Dated archives", "Archives par date"
-
1
l.store "Author page", "Page d'auteur"
-
1
l.store "Search results", "Résultats de recherche"
-
1
l.store "Help on title settings", "Aide sur le Paramétrage des titres"
-
1
l.store "Replaced with the title of the article/page", "Remplacé par le titre de l'article ou de la page"
-
1
l.store "The blog's name", "Le nom du blog"
-
1
l.store "The blog's tagline / description", "Le sous-titre du blog"
-
1
l.store "Replaced with the post/page excerpt", "Remplacé par l'introduction de l'article ou de la page"
-
1
l.store "Replaced with the article tags (comma separated)", "Remplacé par les tags de l'article (séparés par une virgule)"
-
1
l.store "Replaced with the article categories (comma separated)", "Remplacé par les catégories de l'article (séparées par une virgule)"
-
1
l.store "Replaced with the article/page title", "Remplacé par le titre de l'article ou de la page"
-
1
l.store "Replaced with the category/tag name", "Remplacé par le nom de la catégorie ou du mot-clé"
-
1
l.store "Replaced with the current search phrase", "Remplacé avec le contenu de la recherche"
-
1
l.store "Replaced with the current time", "Remplacé par l'heure actuelle"
-
1
l.store "Replaced with the current date", "Remplacé par la date du jour"
-
1
l.store "Replaced with the current month", "Remplacé par le mois en cours"
-
1
l.store "Replaced with the current year", "Remplacé par l'année en cours"
-
1
l.store "Replaced with the current page number", "Remplacé par le numéro de la page"
-
1
l.store "Replaced by the archive date", "Remplacé par la date de l'archive"
-
-
# app/views/admin/settings/errors.html.erb
-
1
l.store "Error 404", "Erreur 404 (le document demandé n'existe pas)"
-
1
l.store "Message", "Message"
-
1
l.store "Error messages", "Messages d'erreur"
-
-
# app/views/admin/settings/feedback.html.erb
-
1
l.store "Enable comments by default", "Activer les commentaires par défaut"
-
1
l.store "Enable Trackbacks by default", "Activer les rétroliens par défaut"
-
1
l.store "Enable feedback moderation", "Activer la modération des commentaires"
-
1
l.store "You can enable site wide feeback moderation. If you do so, no comment or trackback will appear on your blog unless you validate it", "Vous pouvez activez la modération des commentaires sur l'ensemble de votre site. Si vous le faites, aucun commentaire ou rétrolien ne sera publié sans une validation de votre part"
-
1
l.store "Comments filter", "Mise en forme des commentaires"
-
1
l.store "Avatars provider", "Fournisseur d’avatars"
-
1
l.store "Show your email address", "Afficher votre adresse courriel"
-
1
l.store "Enable spam protection", "Activer la protection contre le spam"
-
1
l.store "Enabling spam protection will make typo compare the IP address of posters as well as the contents of their posts against local and remote blacklists. Good defense against spam bots", "La protection contre le spam permettra à typo de comparer l'adresse IP des commentateurs ainsi que le contenu de leurs commentaires avec une liste noire distante"
-
1
l.store "Akismet Key", "Clé Akismet"
-
1
l.store "Typo can (optionally) use the %s spam-filtering service. You need to register with Akismet and receive an API key before you can use their service. If you have an Akismet key, enter it here", "Typo peut utiliser le service de lutte contre le spam %s. Vous devez vous enregistrer afin de pouvoir utiliser les services d'Akismet. Si vous possédez une clé Akismet, ajoutez là ici"
-
1
l.store "Disable trackbacks site-wide", "Désactiver les trackbacks"
-
1
l.store "This setting allows you to disable trackbacks for every article in your blog. It won't remove existing trackbacks, but it will prevent any further attempt to add a trackback anywhere on your blog.", "Cette option vous permet de désactiver totalement les rétroliens sur votre blog. Ceci ne supprimera pas les rétroliens existants, mais empêchera tout nouveau rétrolien d'être créé"
-
1
l.store "Disable comments after", "Désactiver les commentaires au bout de "
-
1
l.store "days", "jours"
-
1
l.store "Set to 0 to never disable comments", "Mettez cette option à 0 pour ne jamais désactiver les commentaires dans le temps"
-
1
l.store "Max Links", "Nombre de liens maximum"
-
1
l.store "Typo will automatically reject comments and trackbacks which contain over a certain amount of links in them", "Typo rejettera automatiquement les commentaires et les rétroliens contenant un certain nombre de liens"
-
1
l.store "Set to 0 to never reject comments", "Mettez cette option à 0 pour ne jamais rejeter les commentaires"
-
1
l.store "Enable reCaptcha", "Utiliser reCaptcha"
-
1
l.store "Remember to set your reCaptcha keys inside config/initializers/recaptcha.rb", "N'oubliez pas de mettre votre clé d'activation dans config/initializers/recaptcha.rb"
-
1
l.store "Feedback settings", "Paramètres des commentaires"
-
-
# app/views/admin/settings/index.html.erb
-
1
l.store "Your blog", "Votre blog "
-
1
l.store "Blog name", "Titre du blog"
-
1
l.store "Blog subtitle", "Sous-titre du blog"
-
1
l.store "Blog URL", "Adresse du blog"
-
1
l.store "Language", "Langue"
-
1
l.store "Allow users to register", "Autoriser les utilisateurs à s'enregistrer"
-
1
l.store "You can allow users to register to your blog. By default, they will register as contributors, an unpriviledged account level which grant them no rights but own a profile on the site. If you don't want users to register, you can thus add them by yourself in the users part of this admin.", "Vous pouvez permettre aux utilisateurs de s'enregistrer sur votre blog. Par défaut, ils seront enregistrés come contributeurs. Cet utilisateur a un niveau faible sans droit mais qui possède sont propre profile sur le site. Si vous ne voulez pas que les utilisateurs s'enregistrent, vous pouvez les ajouter vous même dans la partie d'administration des utilisateurs."
-
1
l.store "Typo can notify you when new articles or comments are posted", "Typo peut vous alerter quand de nouveaux articles et commentaires sont publiés"
-
1
l.store "Source Email", "Adresse courriel source"
-
1
l.store "Email address used by Typo to send notifications", "Adresse courriel utilisée par Typo pour l'envoi d'alertes"
-
1
l.store "Items to display in admin lists", "Nombre d'éléments à afficher dans les listes"
-
1
l.store "Date format", "Afficher les dates"
-
1
l.store "ago", "il y a"
-
1
l.store "Time format", "Afficher les heures"
-
1
l.store "Publishing options", "Options de publication"
-
1
l.store "Display", "Afficher"
-
1
l.store "articles on my homepage by default", "billet sur ma page d'accueil params par défaut"
-
1
l.store "articles in my news feed by default", "billets dans mon flux RSS par défaut"
-
1
l.store "Show only article excerpt on feed", "Tronquer les articles dans le flux RSS"
-
1
l.store "Feedburner ID", "Identifiant Feedburner"
-
1
l.store "You can use your Google Feedburner account instead of Typo feed URL. To enable this, fill this form with your Feedburner ID.", "Vous pouvez utiliser votre compte Google Feedburner plutôt que votre adresse de flux Typo. Pour l'autoriser, remplissez ce formulaire avec votre identifiant Feedburner."
-
-
# app/views/admin/settings/update_database.html.erb
-
1
l.store "Information", "Informations"
-
1
l.store "Current database version", "Version actuelle de la base"
-
1
l.store "New database version", "Nouvelle version de la base"
-
1
l.store "Your database supports migrations", "Votre base de données supporte la mise à jour"
-
1
l.store "Needed migrations", "Mise à jour nécessaire"
-
1
l.store "You are up to date!", "Vous êtes à jour !"
-
1
l.store "Update database now", "Mettez votre base à jour"
-
1
l.store "may take a moment", "cela peut prendre un moment"
-
1
l.store "Database migration", "Mise à jour de la base de données"
-
1
l.store "yes", "oui"
-
1
l.store "no", "non"
-
-
# app/views/admin/settings/write.html.erb
-
1
l.store "Send trackbacks", "Envoyer des rétroliens"
-
1
l.store "When publishing articles, Typo can send trackbacks to websites that you link to. This should be disabled for private blogs as it will leak non-public information to sites that you're discussing. For public blogs, there's no real point in disabling this.", "Quand vous publiez un billet sur Typo, vous pouvez envoyer un rétrolien aux sites que vous liez. Cette fonctionnalité devrait être désactivée pour les blogs privée puisqu'elle permet de donner des informations à leur sujet à des tiers. Ceci ne s'impose cependant pas pour un blog public."
-
1
l.store "URLs to ping automatically", "Sites à alerter automatiquement"
-
1
l.store "Latitude, Longitude", "Latitude, Longitude"
-
1
l.store "your lattitude and longitude", "vos coordonnées géographiques"
-
1
l.store "exemple", "exemple"
-
1
l.store "Media", "Média"
-
1
l.store "Image thumbnail size", "Taille des vignettes"
-
1
l.store "Image medium size", "Taille des images réduites"
-
1
l.store "Write", "Écrire"
-
-
# app/views/admin/shared/destroy.html.erb
-
1
l.store "Are you sure you want to delete this #{@record.class.name.downcase} ", ""
-
-
# app/views/admin/sidebar/_publish.html.erb
-
1
l.store "Changes published", "Modifications publiées"
-
-
# app/views/admin/sidebar/_target.html.erb
-
1
l.store "Drag some plugins here to fill your sidebar", "Déplacez des plugins dans cet espace afin de remplir votre sidebar"
-
-
# app/views/admin/sidebar/index.html.erb
-
1
l.store "Drag and drop to change the sidebar items displayed on this blog. To remove items from the sidebar just click remove Changes are saved immediately, but not activated until you click the 'Publish' button", "Glissez / déplacez des éléments pour changer la sidebar de votre blog. Pour supprimer un élément de votre sidebar, cliquez simplement sur 'supprimer'. Les changements sont effectués immédiatement, mais ne seront pas actifs tant que vous n'aurez pas cliqué sur le bouton 'Publier'."
-
1
l.store "Available Items", "Éléments disponibles"
-
1
l.store "You have no plugins installed", "Aucun plugin n'est disponible"
-
1
l.store "Active Sidebar items", "Éléments utilisés"
-
1
l.store "Get more plugins", "Télécharger d'autres plugins"
-
1
l.store "You can download and install sidebar plugins from our official %s. All you have to do is upload the theme directory in your vendor/plugins directory.", ""
-
1
l.store "plugin repository", ""
-
1
l.store "Sidebar", "Plugins"
-
1
l.store "Publish changes", "Publier les modifications"
-
-
# app/views/admin/tags/edit.html.erb
-
1
l.store "Editing tag ", ""
-
-
# app/views/admin/tags/index.html.erb
-
1
l.store "Display Name", "Nom affiché"
-
1
l.store "Manage tags", "Labels"
-
-
# app/views/admin/themes/index.html.erb
-
1
l.store "Active theme", "Thème actif"
-
1
l.store "Chose this theme", ""
-
1
l.store "Choose a theme", "Sélectionnez un thème"
-
-
# app/views/admin/users/_form.html.erb
-
1
l.store "Account settings", "Paramètres du compte"
-
1
l.store "Password", "Mot de passe"
-
1
l.store "Password confirmation", "Confirmation du mot de passe"
-
1
l.store "Profile", "Profil"
-
1
l.store "User's status", "Statut de l'utilisateur"
-
1
l.store "Active", "Actif"
-
1
l.store "Inactive", "Inactif"
-
1
l.store "Profile Settings", "Paramètres du profil"
-
1
l.store "Firstname", "Prénom"
-
1
l.store "Lastname", "Nom"
-
1
l.store "Nickname", "Surnom"
-
1
l.store "Editor", "Éditeur"
-
1
l.store "Use simple editor", "Utiliser l'éditeur simplifié"
-
1
l.store "Use visual rich editor", "Utiliser l'éditeur visuel"
-
1
l.store "Notifications", "Notifications"
-
1
l.store "Send notification messages via email", "Envoi de notification des messages par email"
-
1
l.store "Send notification messages when new articles are posted", "Envoi de notification de messages quand de nouveaux articles sont postés"
-
1
l.store "Send notification messages when comments are posted", "Envoi de notification de messages quand des commentaires sont postés"
-
1
l.store "Contact Options", "Paramètres de contact"
-
1
l.store "Your site", "Votre site"
-
1
l.store "display url on public profile", "Afficher votre site sur votre profil public"
-
1
l.store "Your MSN", "Adresse MSN"
-
1
l.store "display MSN ID on public profile", "Afficher votre adresse MSN sur votre profil public"
-
1
l.store "Your Yahoo ID", "Identifiant Yahoo"
-
1
l.store "display Yahoo! ID on public profile", "Afficher votre identifiant Yahoo sur votre profil public"
-
1
l.store "Your Jabber ID", "Votre identifiant Jabber"
-
1
l.store "display Jabber ID on public profile", "Afficher votre identifiant Jabber sur votre profil public"
-
1
l.store "Your AIM id", "Identifiant AIM"
-
1
l.store "display AIM ID on public profile", "Afficher votre identifiant AIM sur votre profil public"
-
1
l.store "Your Twitter username", "Identifiant Twitter"
-
1
l.store "display twitter on public profile", "Afficher votre identifiant Twitter sur votre profil public"
-
1
l.store "Tell us more about you", "Dites nous en plus à votre sujet"
-
-
# app/views/admin/users/edit.html.erb
-
1
l.store "Edit User", "Modifier un utilisateur"
-
-
# app/views/admin/users/index.html.erb
-
1
l.store "New User", "Nouvel utilisateur"
-
1
l.store "Comments", "Commentaires"
-
1
l.store "State", "État"
-
1
l.store "%s user", "utilisateur %s"
-
1
l.store "Users", "Utilisateurs"
-
-
# app/views/admin/users/new.html.erb
-
1
l.store "Add User", "Ajouter un utilisateur"
-
-
# app/views/articles/_article.html.erb
-
1
l.store "Posted by", "Publié par"
-
-
# app/views/articles/_article_excerpt.html.erb
-
1
l.store "Continue reading", "Lire plus"
-
-
# app/views/articles/_comment_failed.html.erb
-
1
l.store "Oops, something wrong happened, the comment could not be saved", "Oops, quelque chose s'est mal déroulé. Votre commentaire n'a donc pu être enregistré."
-
-
# app/views/articles/_comment_form.html.erb
-
1
l.store "Your name", "Votre nom "
-
1
l.store "Your email", "Votre courriel"
-
1
l.store "Your message", "Votre commentaire"
-
1
l.store "Comment Markup Help", "Aide sur le balisage des commentaires"
-
1
l.store "Preview comment", "Prévisualiser le commentaire"
-
1
l.store "leave url/email", "laissez votre url/courriel"
-
-
# app/views/articles/_comment_list.html.erb
-
1
l.store "No comments", "Pas de commentaires"
-
-
# app/views/articles/archives.html.erb
-
1
l.store "No articles found", "Aucun article ne correspond à la recherche"
-
1
l.store "posted in", "publié dans"
-
-
# app/views/articles/comment_preview.html.erb
-
1
l.store "is about to say", "va dire"
-
-
# app/views/articles/groupings.html.erb
-
1
l.store "There are", "Il y a"
-
-
# app/views/articles/read.html.erb
-
1
l.store "Leave a response", "Réagir à ce billet"
-
1
l.store "Trackbacks", "Rétroliens"
-
1
l.store "Use the following link to trackback from your own site", "Utilisez le lien ci-dessous pour envoyer un rétrolien depuis votre site"
-
1
l.store "RSS feed for this post", "Flux RSS de ce billet"
-
1
l.store "trackback uri", "URL de rétrolien"
-
1
l.store "Comments are disabled", "Les commentaires sont désactivés"
-
-
# app/views/authors/show.html.erb
-
1
l.store "Web site:", "Site web:"
-
1
l.store "MSN:", "MSN :"
-
1
l.store "Yahoo:", "Yahoo :"
-
1
l.store "Jabber:", "Jabber :"
-
1
l.store "AIM:", "AIM :"
-
1
l.store "Twitter:", "Twitter :"
-
1
l.store "About %s", "À propos de %s"
-
1
l.store "This author has not published any article yet", "Cet utilisateur n'a publié aucun article"
-
-
# app/views/comments/_comment.html.erb
-
1
l.store "said", "a dit"
-
1
l.store "This comment has been flagged for moderator approval. It won't appear on this blog until the author approves it", "Ce commentaire a été envoyé à la modération. Il ne sera affiché qu'une fois approuvé par un modérateur"
-
-
# app/views/comments/show.html.erb
-
1
l.store "This comment has been flagged for moderator approval.", "Ce commentaire est en attente de modération"
-
-
# app/views/layouts/administration.html.erb
-
1
l.store "Logged in as %s", ""
-
1
l.store "%s »", "%s »"
-
1
l.store "Help", ""
-
1
l.store "Documentation", ""
-
1
l.store "Report a bug", ""
-
1
l.store "In page plugins", ""
-
1
l.store "Sidebar plugins", ""
-
1
l.store "is proudly powered by", "tourne fièrement sous"
-
1
l.store "Dashboard", "Accueil"
-
-
# app/views/setup/index.html.erb
-
1
l.store "Welcome", "Bienvenue"
-
1
l.store "Welcome to your %s blog setup. Just fill in your blog title and your email, and Typo will take care of everything else", ""
-
-
# app/views/shared/_confirm.html.erb
-
1
l.store "Congratulation!", "Félicitations !"
-
1
l.store "You have successfully signed up", "Vous vous êtes inscrit avec succès"
-
1
l.store "<strong>Login:</strong> %s", "<strong>Identifiant :</strong> %s"
-
1
l.store "<strong>Password:</strong> %s", "<strong>Mot de passe :</strong> %s"
-
1
l.store "Don't lose the mail sent at %s or you won't be able to login anymore", "Ne perdez pas l'email que nous venons de vous envoyer à l'adresse %s ou vous ne pourrez plus vous connecter à l'application"
-
1
l.store "Proceed to %s", "Allez sur %s"
-
1
l.store "admin", "l'administration"
-
-
# app/views/shared/_search.html.erb
-
1
l.store "Live Search", "Recherche instantanée"
-
-
# themes/bootstrap/helpers/theme_helper.rb
-
1
l.store "%d comment", "%d commentaires"
-
-
# themes/bootstrap/views/articles/_article.html.erb
-
1
l.store "Published on", ""
-
1
l.store "under", ""
-
-
# themes/bootstrap/views/articles/_comment_form.html.erb
-
1
l.store "Email address", "Adresse mail"
-
1
l.store "Your website", "Votre site"
-
1
l.store "comment", "commentaire"
-
-
# themes/bootstrap/views/articles/read.html.erb
-
1
l.store "If you liked this article you can %s", "Si vous avez aimé cet article, vous pouvez %s"
-
1
l.store "add me to Twitter", "me suivre sur Twitter"
-
1
l.store "Trackbacks for", "Rétroliens pour"
-
-
# themes/bootstrap/views/articles/search.html.erb
-
1
l.store "Search results for:", "Résultats de la recherche sur :"
-
-
# themes/bootstrap/views/categories/index.html.erb
-
1
l.store "Read all articles in %s", "Tous les articles dans %s sont lus"
-
-
# themes/bootstrap/views/categories/show.html.erb
-
1
l.store "Previous", "Précédent"
-
1
l.store "Next", "Suivant"
-
-
# themes/dirtylicious/views/articles/_comment_form.html.erb
-
1
l.store "Leave a comment", "laisser un commentaire"
-
-
# themes/dirtylicious/views/layouts/default.html.erb
-
1
l.store "About", "À propos de"
-
1
l.store "Designed by %s ported to typo by %s ", "Design par %s porté sous Typo par %s"
-
1
l.store "Powered by %s", "Propulsé par %s"
-
-
# themes/scribbish/views/articles/_article.html.erb
-
1
l.store "Meta", "Méta"
-
1
l.store "permalink", "lien permanent"
-
-
# themes/scribbish/views/articles/_comment_form.html.erb
-
1
l.store "Textile enabled", "Textile activé"
-
1
l.store "Markdown enabled", "Markdown activé"
-
-
# themes/scribbish/views/layouts/default.html.erb
-
1
l.store "styled with %s", "stylé avec %s"
-
-
# themes/standard_issue/views/articles/_article.html.erb
-
1
l.store "This entry was posted on %s", "Ce billet a été posté le %s"
-
1
l.store "and %s", "et %s"
-
1
l.store "You can follow any response to this entry through the %s", "Vous pouvez suivre la discussion autour de cet article via le %s"
-
1
l.store "Atom feed", "flux Atom"
-
1
l.store "You can leave a %s", "Vous pouvez déposer un %s"
-
1
l.store "or a %s from your own site", "ou un %s depuis votre site"
-
1
l.store "Read full article", "Lire l'article complet"
-
1
l.store "trackback", "rétrolien"
-
-
# themes/standard_issue/views/articles/_comment_form.html.erb
-
1
l.store "Name %s", "Votre nom %s"
-
1
l.store "never displayed", "jamais affiché"
-
1
l.store "Website", "Votre site"
-
1
l.store "required", "obligatoire"
-
-
# themes/true-blue-3/helpers/theme_helper.rb
-
1
l.store "You are here: ", "Vous êtes ici : "
-
-
# themes/true-blue-3/views/articles/_article.html.erb
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M", ""
-
-
# themes/typographic/views/layouts/default.html.erb
-
1
l.store "Designed by %s ", "Design par %s"
-
-
# vendor/plugins/archives_sidebar/app/views/archives_sidebar/_content.html.erb
-
1
l.store "Archives", "Archives"
-
-
# vendor/plugins/authors_sidebar/app/views/authors_sidebar/_content.html.erb
-
1
l.store "Authors", "Auteurs"
-
-
# vendor/plugins/meta_sidebar/app/views/meta_sidebar/_content.html.erb
-
1
l.store "RSS Feed", ""
-
1
l.store "Admin", ""
-
1
l.store "Powered by Typo", ""
-
-
# vendor/plugins/xml_sidebar/app/views/xml_sidebar/_content.html.erb
-
1
l.store "Syndicate", "Suivre ce blog"
-
1
l.store "Category %s", "Catégorie %s"
-
1
l.store "Tag %s", "Label %s"
-
-
# Obsolete translations
-
1
l.store " made a link to you saying ", " a fait un lien vers vous disant "
-
1
l.store "%d posts", "%d articles"
-
1
l.store "%s", ""
-
1
l.store "%s Post Type", ""
-
1
l.store "%s Redirect", ""
-
1
l.store "(Done)", "(Terminé)"
-
1
l.store "(leave url/email »)", "(laissez votre url/email »)"
-
1
l.store ", Articles for ", ", articles pour "
-
1
l.store "1 post", "1 article"
-
1
l.store "Add MetaData", "Ajouter des métadonnées"
-
1
l.store "All comments", "Tous les commentaires"
-
1
l.store "Allow non-ajax comments", "Autoriser l'envoi de commentaires sans AJAX"
-
1
l.store "Apr", "avr"
-
1
l.store "April", "avril"
-
1
l.store "Archives for", "Archives de"
-
1
l.store "Archives for ", "Archives de"
-
1
l.store "Are you sure you want to delete the Article Type ", ""
-
1
l.store "Are you sure you want to delete the category ", "Êtes vous certain de vouloir supprimer cette catégorie "
-
1
l.store "Are you sure you want to delete the page", "Voulez-vous vraiment effacer cette page"
-
1
l.store "Are you sure you want to delete the redirection ", ""
-
1
l.store "Are you sure you want to delete the tag", "Êtes-vous certain de vouloir supprimer le label"
-
1
l.store "Are you sure you want to delete this %s", ""
-
1
l.store "Are you sure you want to delete this article", "Êtes-vous certain de vouloir supprimer cet article"
-
1
l.store "Are you sure you want to delete this item?", "Êtes vous certain de vouloir supprimer cette entrée ?"
-
1
l.store "Article Types", ""
-
1
l.store "Aug", "août"
-
1
l.store "August", "août"
-
1
l.store "Back to ", "Revenir à "
-
1
l.store "Back to overview", "Revenir à la liste"
-
1
l.store "Back to tags list", "Revenir à la liste des labels"
-
1
l.store "Blacklist Pattern could not be created.", "Cette entrée n'a pas pu être créée"
-
1
l.store "Blacklist Pattern could not be updated.", "Cette entrée n'a pas pu être mise à jour"
-
1
l.store "Blacklist Pattern was successfully created.", "Cette entrée a été créée avec succès"
-
1
l.store "Blacklist Patterns", "Liste noire"
-
1
l.store "BlacklistPattern was successfully updated.", "Cette entrée a été mise à jour avec succès"
-
1
l.store "Blog settings", "Configuration du blog"
-
1
l.store "By %s on %s", "Par %s le %s"
-
1
l.store "Category", "Catégorie"
-
1
l.store "Comment Excerpt", "Extrait du commentaire"
-
1
l.store "Comments for", "Commentaires pour"
-
1
l.store "Comments for %s (%s)", "Commentaires sur l'article %s (%s)"
-
1
l.store "Confirm Classification of Checked Items", "Confirmer la classification des commentaires"
-
1
l.store "Contact options", "Options de contact"
-
1
l.store "Content Type was successfully updated.", "Le type du contenu a été mis à jour avec succès."
-
1
l.store "Continue reading...", "Lire la suite..."
-
1
l.store "Copyright Information", "Informations sur le copyright"
-
1
l.store "Dec", "déc"
-
1
l.store "December", "décembre"
-
1
l.store "Delete this Post Type", ""
-
1
l.store "Delete this article", "Supprimer ce billet"
-
1
l.store "Delete this category", "Supprimer cette catégorie"
-
1
l.store "Delete this feedback", ""
-
1
l.store "Delete this page", "Supprimer cette page"
-
1
l.store "Delete this redirection", ""
-
1
l.store "Delete this tag", "Supprimer ce label"
-
1
l.store "Display name", "Nom affiché sur le site"
-
1
l.store "Duration", "Durée"
-
1
l.store "Edit Metadata", "Modifier les métadonnées"
-
1
l.store "Editing ", "Vous éditez"
-
1
l.store "Editing pattern", "Éditer un motif"
-
1
l.store "Error occurred while updating Content Type.", "Une erreur est survenue lors de la mise à jour du type du contenu."
-
1
l.store "Explicit", "Contenu explicite"
-
1
l.store "Feb", "fév"
-
1
l.store "February", "février"
-
1
l.store "Feedback for", "Commentaires sur"
-
1
l.store "File", "Fichier"
-
1
l.store "File does not exist", ""
-
1
l.store "File saved successfully", "Le fichier a été enregistré avec succès"
-
1
l.store "Format of permalink", "Format des liens permanents"
-
1
l.store "Fri", "Ven"
-
1
l.store "Friday", "Vendredi"
-
1
l.store "Get more themes", "Téléchargez d'autres thèmes"
-
1
l.store "Google verification link", "Lien Google pour vérification"
-
1
l.store "HTML was cleared", "le cache a est vidé"
-
1
l.store "Ham?", "Désirable?"
-
1
l.store "IP", "Adresse IP"
-
1
l.store "If you are reading this article elsewhere than", "Si vous lisez cet article ailleurs que sur"
-
1
l.store "If you need help, %s. You can also browse our %s or %s to customize your Typo blog.", "Si vous avez besoin d'aide, n'hésitez pas à %s. Vous pouvez aussi visiter notre %s ou %s afin de personnaliser votre blog sous Typo"
-
1
l.store "Images", "Images"
-
1
l.store "Jan", "jan"
-
1
l.store "January", "janvier"
-
1
l.store "Jul", "juil"
-
1
l.store "July", "juillet"
-
1
l.store "Jun", "juin"
-
1
l.store "June", "juin"
-
1
l.store "Just Marked As Ham", "Marqué comme désirable"
-
1
l.store "Just Marked As Spam", "Marqué comme spam"
-
1
l.store "Just Presumed Ham", "Marqué commme supposé désirable"
-
1
l.store "Key Words", "Mots clé"
-
1
l.store "Latest posts", "Derniers articles"
-
1
l.store "Layout", ""
-
1
l.store "Limit to ham", "Uniquement les commentaires validés"
-
1
l.store "Limit to presumed ham", ""
-
1
l.store "Limit to presumed spam", ""
-
1
l.store "Limit to spam", "N'afficher que le spam"
-
1
l.store "Login %s", "Identifiant %s"
-
1
l.store "Mandatory", "Obligatoire"
-
1
l.store "Mar", "mars"
-
1
l.store "March", "mars"
-
1
l.store "May", "mai"
-
1
l.store "Metadata", "Métadonnées"
-
1
l.store "Metadata was successfully removed.", "Les métadonnées ont été supprimées avec succès."
-
1
l.store "Mon", "Lun"
-
1
l.store "Monday", "Lundi"
-
1
l.store "New Redirect", ""
-
1
l.store "No", "Non"
-
1
l.store "Not published by Apple", "Donnée non publiée par Apple"
-
1
l.store "Notification", "Notifications"
-
1
l.store "Nov", "nov"
-
1
l.store "November", "novembre"
-
1
l.store "Oct", "oct"
-
1
l.store "October", "octobre"
-
1
l.store "Optional Name", "Nom facultatif"
-
1
l.store "Options", "Options"
-
1
l.store "Original article writen by", "Article original écrit par"
-
1
l.store "Password %s", "Mot de passe %"
-
1
l.store "Pattern", "Motif"
-
1
l.store "Personal information", "Informations personnelles"
-
1
l.store "Podcasts", "Podcasts"
-
1
l.store "Post settings", "Paramètres de l'article"
-
1
l.store "Posted in", "Publié sous"
-
1
l.store "Posts", "Articles"
-
1
l.store "Proceed to", "Aller sur"
-
1
l.store "Publish at", "Publié le"
-
1
l.store "Read", "Lire"
-
1
l.store "Read more", "Lire la suite"
-
1
l.store "Really delete user", "Vraiment supprimer cet utilisateur"
-
1
l.store "Recent comments", "Derniers commentaires"
-
1
l.store "Recent trackbacks", "Derniers rétroliens"
-
1
l.store "Regex", "Expression rationnelle"
-
1
l.store "Remove iTunes Metadata", "Supprimer les méta données iTunes"
-
1
l.store "Reorder", "Trier"
-
1
l.store "Resource MetaData", "Méta données des pièces jointes"
-
1
l.store "Sat", "Sam"
-
1
l.store "Saturday", "Samedi"
-
1
l.store "Search Comments and Trackbacks that contain", "Chercher les commentaires et les rétroliens contenant"
-
1
l.store "Search Engine Optimisation", "Optimisation pour les moteurs de recherche"
-
1
l.store "Search Engine Optimization", "Optimisation pour les moteurs de recherche"
-
1
l.store "Search articles that contain ...", "Chercher les articles contenant ..."
-
1
l.store "Searching", "Recherche en cours"
-
1
l.store "Sep", "sep"
-
1
l.store "September", "septembre"
-
1
l.store "Set iTunes metadata for this enclosure", "Ajouter des métadonnées iTunes pour cette pièce jointe"
-
1
l.store "Setting for channel", "Options des canaux"
-
1
l.store "Settings", "Configuration"
-
1
l.store "Show content", "Afficher le contenu"
-
1
l.store "Sorry the theme catalogue is not available", "Désolé le catalogue de thèmes n'est pas disponible"
-
1
l.store "Sort alphabetically", "Trier par ordre alphabétique"
-
1
l.store "Spam?", "Spam?"
-
1
l.store "Statistics", "Statistiques"
-
1
l.store "String", "Chaîne de caractères"
-
1
l.store "Stylesheets", ""
-
1
l.store "Subtitle", "Sous-titre"
-
1
l.store "Summary", "Résumé"
-
1
l.store "Sun", "Dim"
-
1
l.store "Sunday", "Dimanche"
-
1
l.store "System information", "Informations systèmes"
-
1
l.store "The below settings act as defaults when you choose to publish an enclosure with iTunes metadata", "Les options suivantes seront ajoutées automatiquement quand vous publierez des enclosures contenant des métadonnées iTunes"
-
1
l.store "Theme catalogue", "Catalogue de thèmes"
-
1
l.store "Theme editor", "Éditeur de thèmes"
-
1
l.store "There is no %s yet. Why don't you start and create one?", "Il n'y a aucun %s, pourquoi n'en créeriez-vous pas ?"
-
1
l.store "Thu", "Jeu"
-
1
l.store "Thursday", "Jeudi"
-
1
l.store "Titles", ""
-
1
l.store "To install a theme you just need to upload the theme folder into your themes directory. Once a theme is uploaded, you should see it on this page.", "Pour installer votre thèmes, il suffit de l'uploader dans le dossier themes de votre projet."
-
1
l.store "Tue", "Mar"
-
1
l.store "Tuesday", "Mardi"
-
1
l.store "Type", "Type"
-
1
l.store "Typogarden", "Typogarden"
-
1
l.store "Unable to write file", "Impossible d'écrire le fichier"
-
1
l.store "Unclassified", "Non vérifié"
-
1
l.store "Unpublished", "Non publié"
-
1
l.store "Visual", "Visuel"
-
1
l.store "Wed", "Mer"
-
1
l.store "Wednesday", "Mercredi"
-
1
l.store "Yes", "Oui"
-
1
l.store "You are not authorized to open this file", "Vous n'êtes pas autorisé à ouvrir ce fichier"
-
1
l.store "You can download third party themes from officially supported %s ", "Vous pouvez télécharger des thèmes officiellement supportés sur %s "
-
1
l.store "You can optionally disable non-Ajax comments. Typo will always use Ajax for comment submission if Javascript is enabled, so non-Ajax comments are either from spammers or users without Javascript.", "Vous pouvez désactiver l'envoi des commentaires en AJAX. Typo utilisera toujours l'AJAX par défaut pour envoyer les commentaires si Javascript est activé. Désactiver l'AJAX sert donc aux gens ne disposant pas de Javascript et aux robots spammeurs"
-
1
l.store "You need a permalink format with an identifier : %%month%%, %%year%%, %%day%%, %%title%%", "Vous devez spécifier un identifiant : %%month%%, %%year%%, %%day%%, %%title%%"
-
1
l.store "Your robots.txt file is not writeable. Typo won't be able to write it", "Votre fichier Robots.txt n'est pas écrivable. Typo ne peux donc pas y écrire."
-
1
l.store "add a comment", "Ajouter un commentaire"
-
1
l.store "add new", "nouveau"
-
1
l.store "and published on", "et publié sur"
-
1
l.store "by %s on %s", "par %s sur %s"
-
1
l.store "da_DK", "Danois"
-
1
l.store "de_DE", "Allemand"
-
1
l.store "direct link to this article", "lien direct vers cet article"
-
1
l.store "en_US", "Anglais (Américain)"
-
1
l.store "enabled", "activés"
-
1
l.store "es_MX", "Espagnol (Mexicain)"
-
1
l.store "everything about", "tout sur"
-
1
l.store "example", "par exemple"
-
1
l.store "for", "pour"
-
1
l.store "fr_FR", "Français"
-
1
l.store "from %s to %s", ""
-
1
l.store "he_IL", "Hébreux"
-
1
l.store "it has been illegally reproduced and without proper authorization", "c'est qu'il a été reproduit illégalement et sans autorisation"
-
1
l.store "it_IT", "Italien"
-
1
l.store "ja_JP", "Japonais"
-
1
l.store "later", "plus tard"
-
1
l.store "later:", "plus tard"
-
1
l.store "log out", "déconnexion"
-
1
l.store "lt_LT", "Lituanien"
-
1
l.store "nl_NL", "Hollandais"
-
1
l.store "no posts", "aucun article"
-
1
l.store "pl_PL", "Polonais"
-
1
l.store "published", "publié"
-
1
l.store "ro_RO", "Roumain"
-
1
l.store "save", "Sauver"
-
1
l.store "seperate with spaces", "séparez-les par des espaces"
-
1
l.store "show", "afficher"
-
1
l.store "theme catalogue", "catalogue de thèmes"
-
1
l.store "unpublished", "hors ligne"
-
1
l.store "your blog", "votre blog"
-
1
l.store "your latitude and longitude", "votre latitude et votre longitude"
-
1
l.store "zh_TW", "Chinois"
-
end
-
# coding: utf-8
-
1
Localization.define("he_IL") do |l|
-
-
# app/controllers/accounts_controller.rb
-
1
l.store "Login successful", "ההתחברות הצליחה"
-
1
l.store "Login unsuccessful", "ההתחברות נכשלה"
-
1
l.store "An email has been successfully sent to your address with your new password", ""
-
1
l.store "Oops, something wrong just happened", ""
-
1
l.store "Successfully logged out", "התנתקת מהמערכת בהצלחה"
-
1
l.store "login", ""
-
1
l.store "signup", ""
-
1
l.store "Recover your password", ""
-
-
# app/controllers/admin/categories_controller.rb
-
1
l.store "Category was successfully saved.", ""
-
1
l.store "Category could not be saved.", ""
-
-
# app/controllers/admin/content_controller.rb
-
1
l.store "Error, you are not allowed to perform this action", "שגיאה, אינך רשאי לבצע פעולה זו"
-
1
l.store "Preview", "תצוגה מקדימה"
-
1
l.store "Article was successfully created", "הכתבה נוצרה בהצלחה "
-
1
l.store "Article was successfully updated.", "הכתבה עודכנה בהצלחה."
-
-
# app/controllers/admin/feedback_controller.rb
-
1
l.store "Deleted", "נמחקה"
-
1
l.store "Not found", "לא נמצאה"
-
1
l.store "Deleted %d item(s)", "נמחקו %d פריטים"
-
1
l.store "Marked %d item(s) as Ham", "סומנו %d פריטים כלא ספאם"
-
1
l.store "Marked %d item(s) as Spam", "סומנו %d פריטים כספאם"
-
1
l.store "Confirmed classification of %s item(s)", "אומת הסיווג של %d פריטים."
-
1
l.store "Not implemented", "לא מיושם"
-
1
l.store "All spam have been deleted", ""
-
1
l.store "Comment was successfully created.", "התגובה נוצרה בהצלחה."
-
1
l.store "Comment was successfully updated.", "התגובה עודכנה בהצלחה."
-
-
# app/controllers/admin/pages_controller.rb
-
1
l.store "Page was successfully created.", "הדף נוצר בהצלחה."
-
1
l.store "Page was successfully updated.", "הדף עודכן בהצלחה."
-
-
# app/controllers/admin/profiles_controller.rb
-
1
l.store "User was successfully updated.", "המשתמש עודכן בהצלחה."
-
-
# app/controllers/admin/resources_controller.rb
-
1
l.store "Error occurred while updating Content Type.", "שגיאה בעת עדכון סוג התוכן."
-
1
l.store "complete", "מלא"
-
1
l.store "File uploaded: ", " :הקובץ הועלה"
-
1
l.store "Unable to upload", "לא מסוגל להעלות"
-
1
l.store "Metadata was successfully updated.", "מידע-העל עודכן בהצלחה."
-
1
l.store "Not all metadata was defined correctly.", "לא כל מידע-העל הוגדר נכון."
-
1
l.store "Content Type was successfully updated.", "סוג התוכן עודכן בהצלחה."
-
-
# app/controllers/admin/settings_controller.rb
-
1
l.store "Please review and save the settings before continuing", "אנא בדוק ושמור את השינויים לפני שתמשיך"
-
1
l.store "config updated.", "ההגדרה עודכנה."
-
-
# app/controllers/admin/sidebar_controller.rb
-
1
l.store "It seems something went wrong. Maybe some of your sidebars are actually missing and you should either reinstall them or remove them manually", ""
-
-
# app/controllers/admin/tags_controller.rb
-
1
l.store "Tag was successfully updated.", "התוית עודכנה בהצלחה."
-
-
# app/controllers/admin/themes_controller.rb
-
1
l.store "Theme changed successfully", ""
-
1
l.store "You are not authorized to open this file", "אינך רשאי לפתוח קובץ זה"
-
1
l.store "File saved successfully", "הקובץ נשמר בהצלחה"
-
1
l.store "Unable to write file", "שגיאה בעת כתיבת הקובץ"
-
-
# app/controllers/admin/users_controller.rb
-
1
l.store "User was successfully created.", "המשתמש נוצר בהצלחה."
-
-
# app/controllers/application_controller.rb
-
1
l.store "Localization.rtl", "1"
-
-
# app/controllers/articles_controller.rb
-
1
l.store "No posts found...", ""
-
1
l.store "Archives for", ""
-
1
l.store "Archives for ", ""
-
1
l.store ", Articles for ", ""
-
-
# app/controllers/grouping_controller.rb
-
1
l.store "page", ""
-
1
l.store "everything about", ""
-
-
# app/helpers/admin/base_helper.rb
-
1
l.store "Cancel", "בטל"
-
1
l.store "Store", ""
-
1
l.store "Delete", "מחק"
-
1
l.store "delete", "מחק"
-
1
l.store "Delete content", "מחק תוכן"
-
1
l.store "Are you sure?", "האם אתה בטוח? "
-
1
l.store "Please select", "אנא בחר"
-
1
l.store "There are no %s yet. Why don't you start and create one?", ""
-
1
l.store "or", "או"
-
1
l.store "Save", "שמור"
-
1
l.store "Edit", "ערוך"
-
1
l.store "Show", ""
-
1
l.store "Published", "פורסם"
-
1
l.store "Unpublished", "לא פורסם"
-
1
l.store "Show help on Typo macros", ""
-
1
l.store "Back to overview", "עבור לסקירה"
-
1
l.store "Name", "שם"
-
1
l.store "Description", "תיאור"
-
1
l.store "Tag", "תוית"
-
-
# app/helpers/admin/categories_helper.rb
-
1
l.store "no articles", "אין כתבות"
-
1
l.store "1 article", "כתבה 1"
-
1
l.store "%d articles", "%d כתבות"
-
-
# app/helpers/admin/content_helper.rb
-
1
l.store "Destroy this draft", "מחוק טיוטה זו"
-
-
# app/helpers/admin/feedback_helper.rb
-
1
l.store "Show conversation", ""
-
1
l.store "Flag as %s", ""
-
-
# app/helpers/application_helper.rb
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M:%%S GMT", "%%a, %%d %%b %%Y %%H:%%M:%%S GMT"
-
1
l.store "%%d. %%b", "%%d. %%b"
-
1
l.store "%d comments", "%d תגובות"
-
1
l.store "no comments", "אין תגובות"
-
1
l.store "1 comment", "תגובה 1"
-
1
l.store "no trackbacks", "אין עוקבים-חזרה"
-
1
l.store "1 trackback", "עוקב-חזרה 1"
-
1
l.store "%d trackbacks", "%d עוקבים-חזרה"
-
-
# app/helpers/content_helper.rb
-
1
l.store "Posted in", "פורסם ב-"
-
1
l.store "Tags", "תוויות"
-
1
l.store "no posts", "אין כתבות"
-
1
l.store "1 post", "כתבה 1"
-
1
l.store "%d posts", "%d כתבות"
-
-
# app/models/article.rb
-
1
l.store "Original article writen by", ""
-
1
l.store "and published on", ""
-
1
l.store "direct link to this article", ""
-
1
l.store "If you are reading this article elsewhere than", ""
-
1
l.store "it has been illegally reproduced and without proper authorization", ""
-
-
# app/models/blog.rb
-
1
l.store "You need a permalink format with an identifier : %%month%%, %%year%%, %%day%%, %%title%%", ""
-
1
l.store "Can't end in .rss or .atom. These are reserved to be used for feed URLs", ""
-
-
# app/models/feedback/states.rb
-
1
l.store "Unclassified", "לא סווג"
-
1
l.store "Just Presumed Ham", "כנראה לא-ספאם"
-
1
l.store "Ham?", "לא-ספאם ?"
-
1
l.store "Just Marked As Ham", "סומן כלא-ספאם"
-
1
l.store "Ham", "לא-ספאם"
-
1
l.store "Spam?", "ספאם ?"
-
1
l.store "Just Marked As Spam", "סומן כספאם"
-
1
l.store "Spam", "ספאם"
-
-
# app/views/accounts/login.html.erb
-
1
l.store "I've lost my password", ""
-
1
l.store "Login", "התחבר"
-
1
l.store "Password", "סיסמה"
-
1
l.store "Remember me", ""
-
1
l.store "Submit", "שלח"
-
1
l.store "Back to ", "חזור אל "
-
-
# app/views/accounts/recover_password.html.erb
-
1
l.store "Username or email", ""
-
-
# app/views/accounts/signup.html.erb
-
1
l.store "Create an account", ""
-
1
l.store "Username", "שם משתמש"
-
1
l.store "Email", "דואל"
-
1
l.store "Signup", "הירשם"
-
-
# app/views/admin/categories/_categories.html.erb
-
1
l.store "Title", "כותרת"
-
1
l.store "Reorder", "סדר מחדש"
-
1
l.store "Sort alphabetically", "מיין לפי האלף-בית"
-
-
# app/views/admin/categories/_form.html.erb
-
1
l.store "Keywords", ""
-
-
# app/views/admin/categories/destroy.html.erb
-
1
l.store "Are you sure you want to delete the category ", "האם אתה בטוח שברצונך למחוק את הקטגורייה ?"
-
1
l.store "Delete this category", "מחק קטגורייה זו"
-
1
l.store "Categories", "קטגוריות"
-
-
# app/views/admin/categories/index.html.erb
-
1
l.store "New Category", ""
-
-
# app/views/admin/categories/new.html.erb
-
1
l.store "%s Category", ""
-
-
# app/views/admin/categories/reorder.html.erb
-
1
l.store "(Done)", "(בוצע)"
-
-
# app/views/admin/content/_attachment.html.erb
-
1
l.store "Remove", "הסר"
-
1
l.store "Currently this article has the following resources", "כרגע לכתבה שייכים המשאבים הבאים"
-
1
l.store "You can associate the following resources", "תוכל לשייך אליה את המשאבים הבאים"
-
1
l.store "Really delete attachment", "האם אתה בטוח שברצונך למחוק את הקובץ הצורף"
-
1
l.store "Add Another Attachment", "הוסף קובץ-מצורף"
-
-
# app/views/admin/content/_drafts.html.erb
-
1
l.store "Drafts", ""
-
-
# app/views/admin/content/_form.html.erb
-
1
l.store "Publish settings", ""
-
1
l.store "Allow comments", "אפשר תגובות"
-
1
l.store "Allow trackbacks", "אפשר עוקבים חזרה"
-
1
l.store "Password:", ""
-
1
l.store "Publish", "פרסם"
-
1
l.store "Excerpt", ""
-
1
l.store "Excerpts are posts summaries that are shown on your blog homepage only but won’t appear on the post itself", ""
-
1
l.store "Uploads", "העלאות"
-
1
l.store "Post settings", "הגדרות כתבה"
-
1
l.store "Publish at", "פורסם בתאריך"
-
1
l.store "Permalink", "קישור קבוע"
-
1
l.store "Article filter", "מסנן הכתבה"
-
1
l.store "Save as draft", "שמור טיוטה"
-
-
# app/views/admin/content/destroy.html.erb
-
1
l.store "Are you sure you want to delete this article", "האם אתה בטוח שברצונך למחוק כתבה זו"
-
1
l.store "Delete this article", "מחק כתבה זו"
-
1
l.store "Articles", "כתבות"
-
-
# app/views/admin/content/index.html.erb
-
1
l.store "New Article", ""
-
1
l.store "Search articles that contain ...", ""
-
1
l.store "Search", "חפש"
-
1
l.store "Author", "כותב"
-
1
l.store "Date", "תאריך"
-
1
l.store "Feedback", "משוב"
-
1
l.store "Filter", "סנן"
-
1
l.store "Manage articles", "ערוך כתבות"
-
-
# app/views/admin/dashboard/_comments.html.erb
-
1
l.store "Latest Comments", ""
-
1
l.store "No comments yet", "עדיין ללא תגובות"
-
1
l.store "By %s on %s", ""
-
-
# app/views/admin/dashboard/_inbound.html.erb
-
1
l.store "Inbound links", ""
-
1
l.store "No one made a link to you yet", ""
-
1
l.store " made a link to you saying ", ""
-
1
l.store "You have no internet connection", ""
-
-
# app/views/admin/dashboard/_overview.html.erb
-
1
l.store "This place gives you a quick overview of what happens on your Typo blog and what you can do. Maybe will you want to %s, %s or %s.", ""
-
1
l.store "update your profile or change your password", ""
-
1
l.store "You can also do a bit of design, %s or %s.", "תוכל גם %s או %s"
-
1
l.store "change your blog presentation", ""
-
1
l.store "enable plugins", "לאפשר תוספים"
-
1
l.store "write a post", "לכתוב כתבה"
-
1
l.store "write a page", "לכתוב דף"
-
-
# app/views/admin/dashboard/_popular.html.erb
-
1
l.store "Most popular", "הכי פופלריים"
-
1
l.store "Nothing to show yet", "אין מה להציג כרגע"
-
-
# app/views/admin/dashboard/_posts.html.erb
-
1
l.store "Latest Posts", ""
-
1
l.store "No posts yet, why don't you start and write one", "אין כתבות עדיין, למה שלא תתחיל לכתוב כתבה חדשה"
-
-
# app/views/admin/dashboard/_typo_dev.html.erb
-
1
l.store "Latest news from the Typo development blog", ""
-
1
l.store "Oh no, nothing new", ""
-
-
# app/views/admin/dashboard/_welcome.html.erb
-
1
l.store "Welcome back, %s!", "ברוך הבא, %s!"
-
1
l.store "%d articles and %d comments were posted since your last connexion", ""
-
1
l.store "You're running Typo %s", "אתה מריץ את Typo %s"
-
1
l.store "Total posts : %d", "כתבות: %d"
-
1
l.store "Your posts : %d", "הכתבות שלך: %d"
-
1
l.store "Total comments : %d", "תגובות: %d"
-
1
l.store "Spam comments : %d", "תגובות ספאם: %d"
-
-
# app/views/admin/feedback/_button.html.erb
-
1
l.store "Select action", ""
-
1
l.store "Delete Checked Items", "מחק פריטים שסומנו"
-
1
l.store "Delete all spam", ""
-
1
l.store "Mark Checked Items as Spam", "סווג פריטים שסומנו כספאם"
-
1
l.store "Mark Checked Items as Ham", "סווג פריטים שסומנו כלא-ספאם"
-
1
l.store "All comments", ""
-
1
l.store "Limit to ham", ""
-
1
l.store "Unapproved comments", "תגובות לא מאושרות"
-
1
l.store "Limit to spam", "סווג כספאם"
-
-
# app/views/admin/feedback/_form.html.erb
-
1
l.store "Add a comment", ""
-
1
l.store "Url", "כתובת"
-
-
# app/views/admin/feedback/_spam.html.erb
-
1
l.store "This comment by <strong>%s</strong> was flagged as spam, %s?", ""
-
-
# app/views/admin/feedback/article.html.erb
-
1
l.store "Comments for %s", "תגובות עבור %s"
-
1
l.store "Status", "מצב"
-
1
l.store "Comment Author", ""
-
1
l.store "Comment", ""
-
-
# app/views/admin/feedback/edit.html.erb
-
1
l.store "Comments for", "תגובות על"
-
-
# app/views/admin/feedback/index.html.erb
-
1
l.store "Search Comments and Trackbacks that contain", "חפש תגובות או עוקבים-חזרה המכילים"
-
1
l.store "Article", "כתבה"
-
-
# app/views/admin/pages/_form.html.erb
-
1
l.store "Online", "מוצג"
-
1
l.store "Page settings", ""
-
1
l.store "Permanent link", ""
-
-
# app/views/admin/pages/destroy.html.erb
-
1
l.store "Pages", "דפים"
-
1
l.store "Are you sure you want to delete the page", "האם אתה בטוח שברצונך למחוק דף זה ?"
-
1
l.store "Delete this page", "מחק דף זה"
-
-
# app/views/admin/pages/index.html.erb
-
1
l.store "New Page", ""
-
1
l.store "Manage pages", "נהל דפים"
-
-
# app/views/admin/profiles/index.html.erb
-
1
l.store "Your profile", ""
-
-
# app/views/admin/resources/_mime_edit.html.erb
-
1
l.store "Content Type", "סוג התוכן"
-
-
# app/views/admin/resources/_pages.html.erb
-
1
l.store "Previous page", "הדף הקודם"
-
1
l.store "Next page", "הדף הבא"
-
-
# app/views/admin/resources/_upload.html.erb
-
1
l.store "Upload a File to your Site", "העלה קובץ לאתר שלך"
-
1
l.store "File", "קובץ"
-
1
l.store "Upload", "העלה"
-
-
# app/views/admin/resources/destroy.html.erb
-
1
l.store "Are you sure you want to delete this file", "האם אתה בטוח שברצונך למחוק קובץ זה ?"
-
1
l.store "Delete this file from the webserver?", "למחוק קובץ זה מהשרת"
-
1
l.store "File Uploads", "העלאות קבצים"
-
-
# app/views/admin/resources/images.html.erb
-
1
l.store "Thumbnail", ""
-
1
l.store "File Size", "גודל הקובץ"
-
1
l.store "Images", ""
-
1
l.store "right-click for link", "לחיצה ימנית לקישור"
-
-
# app/views/admin/resources/index.html.erb
-
1
l.store "Filename", "שם הקובץ"
-
-
# app/views/admin/settings/_submit.html.erb
-
1
l.store "Update settings", ""
-
-
# app/views/admin/settings/feedback.html.erb
-
1
l.store "Enable comments by default", "אפשר תגובות כברירת מחדל"
-
1
l.store "Enable Trackbacks by default", "אפשר עוקבים-חזרה כברירת מחדל"
-
1
l.store "Enable feedback moderation", "אפשר ביקורת על המשוב"
-
1
l.store "You can enable site wide feeback moderation. If you do so, no comment or trackback will appear on your blog unless you validate it", "תוכל לאפשר ביקורת על המשוב בכל האתר. אם תבצע זאת, לא תוצג שום תגובה או עוקב-חזרה בבלוג שלך אלא אם תאשר אותה."
-
1
l.store "Comments filter", "מסנן התגובות"
-
1
l.store "Enable gravatars", "אפשר דמויות"
-
1
l.store "Show your email address", "הצג את כתובת הדואל שלך"
-
1
l.store "Notifications", ""
-
1
l.store "Typo can notify you when new articles or comments are posted", "Typo יכולה לעדכן אותך בעת שמאמרים חדשים או תגובות נשלחות."
-
1
l.store "Source Email", "דואל המקור"
-
1
l.store "Email address used by Typo to send notifications", "כתובת הדואל שתשמש את Typo לשלוח עדכונים"
-
1
l.store "Enabling spam protection will make typo compare the IP address of posters as well as the contents of their posts against local and remote blacklists. Good defense against spam bots", "אפשור הגנת ספאם תגרום ל-Typo להשוות כתובות ה-IP של השולחים ואת תוכן השליחה כנגד רשימות שחורות מקומיות או מרוחקות - הגנה טובה כנגד רובוטי ספאם."
-
1
l.store "Enable spam protection", "אפשר הגנת ספאם"
-
1
l.store "Akismet Key", "מפתח Akismet"
-
1
l.store "Typo can (optionally) use the %s spam-filtering service. You need to register with Akismet and receive an API key before you can use their service. If you have an Akismet key, enter it here", "תוכל להשתמש בשירות מסנן ספאם של %s. עליך להירשם Akisemt מפתח API לפני שתוכל להשתמש בשירות. אם כבר יש לך מפתח, רשום אותו כאן."
-
1
l.store "Disable trackbacks site-wide", "בטל עוקבים-חזרה בכל האתר"
-
1
l.store "This setting allows you to disable trackbacks for every article in your blog. It won't remove existing trackbacks, but it will prevent any further attempt to add a trackback anywhere on your blog.", "הגדרה זו מאפשרת לך לבטל עוקבים-חזרה לכל כתבה בבלוג שלך. היא לא תסיר עוקבים-חזרה קיימים, אבל תמנע נסיונות להוספת עוקב-חזרה בכל הכתבות הבלוג שלך."
-
1
l.store "Disable comments after", "בטל תגובות לאחר"
-
1
l.store "days", "ימים"
-
1
l.store "Set to 0 to never disable comments", "הגדר כ-0 כדי לא לבטל תגובות אף פעם"
-
1
l.store "Max Links", "מקסימום קישורים"
-
1
l.store "Typo will automatically reject comments and trackbacks which contain over a certain amount of links in them", "Typo תדחה אוטומטית תגובות ועוקבים-חזרה המכילים את כמות הקישורים מסויימת"
-
1
l.store "Set to 0 to never reject comments", "הגדר כ-0 כדי לא לדחות תגובות לעולם"
-
1
l.store "Feedback settings", ""
-
-
# app/views/admin/settings/index.html.erb
-
1
l.store "Your blog", "הבלוג שלך"
-
1
l.store "Blog name", "שם הבלוג"
-
1
l.store "Blog subtitle", "כותרת משנה"
-
1
l.store "Blog URL", "כתובת הבלוג"
-
1
l.store "Language", "שפה"
-
1
l.store "Allow users to register", "אפשר למשתמשים להירשם"
-
1
l.store "You can allow users to register to your blog. By default, they will register as contributors, an unpriviledged account level which grant them no rights but own a profile on the site. If you don't want users to register, you can thus add them by yourself in the users part of this admin.", "תוכל לאפשר למשתמשים להירשם לבלוג שלך. כברירת מחדל, הם יירשמו כתורמים - חשבון שאינו נותן הרשאות מיוחדות אלא רק את הזכות להחזיק חשבון באתר. אם אינך רוצה שהמשתמשים יוכלו להירשם בעצמם, תוכל להוסיף אותם בעצמך כחללק מדף זה"
-
1
l.store "Items to display in admin lists", ""
-
1
l.store "Publishing options", ""
-
1
l.store "Display", "תצוגה"
-
1
l.store "articles on my homepage by default", "כתבות בדף הבית שלי"
-
1
l.store "articles in my news feed by default", "כתבות במזין החדשות שלי"
-
1
l.store "Show full article on feed", "הצג כתבה מלאה במזין החדשות"
-
1
l.store "Feedburner ID", ""
-
1
l.store "General settings", "הגדרות כלליות"
-
1
l.store "You can use your Google Feedburner account instead of Typo feed URL. To enable this, fill this form with your Feedburner ID.", ""
-
-
# app/views/admin/settings/seo.html.erb
-
1
l.store "Search Engine Optimisation", "אופטימיזצית מנוע חיפוש"
-
1
l.store "Format of permalink", ""
-
1
l.store "Google Analytics", ""
-
1
l.store "Google verification link", ""
-
1
l.store "Meta description", ""
-
1
l.store "Meta keywords", ""
-
1
l.store "Use RSS description", ""
-
1
l.store "Index categories", ""
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every category page, removing them from search engines and preventing duplicate content issues", ""
-
1
l.store "Index tags", ""
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every tags page, removing them from search engines and preventing duplicate content issues", ""
-
1
l.store "Robots.txt", ""
-
1
l.store "You robots.txt file is not writeable. Typo won't be able to write it", ""
-
1
l.store "Search Engine Optimization", ""
-
1
l.store "This will display", ""
-
1
l.store "at the bottom of each of your post in the RSS feed", ""
-
-
# app/views/admin/settings/update_database.html.erb
-
1
l.store "Information", "מידע"
-
1
l.store "Current database version", "גרסת בסיס הנתונים הנוכחית"
-
1
l.store "New database version", "גירסת בסיס הנתונים החדשה"
-
1
l.store "Your database supports migrations", "בסיס הנתונים שלך תומך בעדכונים"
-
1
l.store "Needed migrations", "עדכונים נדרשים"
-
1
l.store "You are up to date!", "בסיס הנתונים שלך מעודכן !"
-
1
l.store "Update database now", "עדכן את בסיס הנתונים"
-
1
l.store "may take a moment", "ייתכן כי ייקח זמן מה"
-
1
l.store "Database migration", "עדכוני בסיס הנתונים"
-
1
l.store "yes", "כן"
-
1
l.store "no", "לא"
-
-
# app/views/admin/settings/write.html.erb
-
1
l.store "Send trackbacks", "שלח עוקבים-חזרה"
-
1
l.store "When publishing articles, Typo can send trackbacks to websites that you link to. This should be disabled for private blogs as it will leak non-public information to sites that you're discussing. For public blogs, there's no real point in disabling this.", "בעת פרסום במאמר, Typo יכולה לשלוח עוקבים-חזרה לאתרים אליהם אתה מקשר. מומלץ לבטל זאת לבלוגים פרטיים משום שמידע פרטי על האתרים אליהם אתה מקשר עלול לדלוף. לבלוגים ציבוריים, אין טעם לבטל זאת."
-
1
l.store "URLs to ping automatically", "כתובות לקישור אוטומטי"
-
1
l.store "Latitude, Longitude", "קו רוחב, קו אורך"
-
1
l.store "your lattitude and longitude", "קווי הרוחב והאורך שלך"
-
1
l.store "exemple", "דוגמא"
-
1
l.store "Write", "כתוב"
-
-
# app/views/admin/sidebar/_availables.html.erb
-
1
l.store "You have no plugins installed", "אין תוספים מותקנים"
-
-
# app/views/admin/sidebar/_publish.html.erb
-
1
l.store "Changes published", "השינויים פורסמו"
-
-
# app/views/admin/sidebar/_target.html.erb
-
1
l.store "Drag some plugins here to fill your sidebar", "גרור חלק מהתוספים כדי למלא את תיבת הצד"
-
-
# app/views/admin/sidebar/index.html.erb
-
1
l.store "Drag and drop to change the sidebar items displayed on this blog. To remove items from the sidebar just click remove Changes are saved immediately, but not activated until you click the 'Publish' button", "גרור והשלך כדי לשנות את פריטי תיבת הצד המוצגת בבלוג שלך. כדי להסיר פריטים מתיבת הצד, לחץ על הסר. השינויים נשמרים מיידית אבל לא מופעלים עד שתלחץ על הכפתור 'פרסם'."
-
1
l.store "Available Items", "פריטים זמינים"
-
1
l.store "Active Sidebar items", "הפעל פריטי תיבת צד"
-
1
l.store "Get more plugins", ""
-
1
l.store "Sidebar", "תיבת צד"
-
1
l.store "Publish changes", "פרסם שינויים"
-
-
# app/views/admin/tags/_form.html.erb
-
1
l.store "Display name", "שם התצוגה"
-
-
# app/views/admin/tags/destroy.html.erb
-
1
l.store "Are you sure you want to delete the tag", "האם אתה בטוח שרצונך למחוק תווית זו ?"
-
1
l.store "Delete this tag", "מחק תוויות זו"
-
-
# app/views/admin/tags/edit.html.erb
-
1
l.store "Editing ", "עורך"
-
1
l.store "Back to tags list", "חזרה לרשימת התוויות"
-
-
# app/views/admin/tags/index.html.erb
-
1
l.store "Display Name", "שם תצוגה"
-
1
l.store "Manage tags", "נהל תוויות"
-
-
# app/views/admin/themes/catalogue.html.erb
-
1
l.store "Sorry the theme catalogue is not available", ""
-
1
l.store "Theme catalogue", ""
-
-
# app/views/admin/themes/editor.html.erb
-
1
l.store "Theme editor", "עורך העיצוב"
-
-
# app/views/admin/themes/index.html.erb
-
1
l.store "Active theme", "עיצוב פעיל"
-
1
l.store "Get more themes", "קבל עיצובים נוספים"
-
1
l.store "You can download third party themes from officially supported %s ", "תוכל להוריד עיצובים נוספים מהאתר %s"
-
1
l.store "Typogarden", "Typogarden"
-
1
l.store "To install a theme you just need to upload the theme folder into your themes directory. Once a theme is uploaded, you should see it on this page.", "כדי להתקין עיצוב עליך תצטרך להעלות אותא אל ספריית העיצובים שלך (Themes). ברגע שהעיצוב הועלה תוכל לראות בדף זה."
-
1
l.store "Choose a theme", "בחר עיצוב"
-
-
# app/views/admin/users/_form.html.erb
-
1
l.store "Account settings", ""
-
1
l.store "Password confirmation", "אימות סיסמה"
-
1
l.store "Profile", "דיוקן"
-
1
l.store "User's status", ""
-
1
l.store "Active", ""
-
1
l.store "Inactive", ""
-
1
l.store "Profile Settings", ""
-
1
l.store "Firstname", ""
-
1
l.store "Lastname", ""
-
1
l.store "Nickname", ""
-
1
l.store "Editor", "עורך"
-
1
l.store "Use simple editor", ""
-
1
l.store "Use visual rich editor", "השתמש בעורך ויזואלי עשיר"
-
1
l.store "Send notification messages via email", "שלח עדכונים באמצאות הדואל"
-
1
l.store "Send notification messages when new articles are posted", "עדכן בעת כתבות חדשים"
-
1
l.store "Send notification messages when comments are posted", "עדכן בעת תגובות חדשות"
-
1
l.store "Contact Options", ""
-
1
l.store "Your site", ""
-
1
l.store "display url on public profile", ""
-
1
l.store "Your MSN", ""
-
1
l.store "display MSN ID on public profile", ""
-
1
l.store "Your Yahoo ID", ""
-
1
l.store "display Yahoo! ID on public profile", ""
-
1
l.store "Your Jabber ID", ""
-
1
l.store "display Jabber ID on public profile", ""
-
1
l.store "Your AIM id", ""
-
1
l.store "display AIM ID on public profile", ""
-
1
l.store "Your Twitter username", ""
-
1
l.store "display twitter on public profile", ""
-
1
l.store "Tell us more about you", ""
-
-
# app/views/admin/users/destroy.html.erb
-
1
l.store "Really delete user", "האם אתה בטוח שברונך למחוק משתמש זה?"
-
1
l.store "Yes", "כן"
-
1
l.store "Users", "משתמשים"
-
-
# app/views/admin/users/edit.html.erb
-
1
l.store "Edit User", "ערוך משתמש"
-
-
# app/views/admin/users/index.html.erb
-
1
l.store "New User", ""
-
1
l.store "Comments", "תגובות"
-
1
l.store "State", ""
-
1
l.store "%s user", ""
-
-
# app/views/admin/users/new.html.erb
-
1
l.store "Add User", "הוסף משתמש"
-
-
# app/views/articles/_article.html.erb
-
1
l.store "Posted by", "נכתב על ידי"
-
1
l.store "Continue reading", ""
-
-
# app/views/articles/_comment.html.erb
-
1
l.store "said", "a dit"
-
1
l.store "This comment has been flagged for moderator approval. It won't appear on this blog until the author approves it", "תגובה זו הועברה לביקורת. היא לא תופיע בבלוג עד אשר הכותב יאשר אותה"
-
-
# app/views/articles/_comment_box.html.erb
-
1
l.store "Your name", "השם שלך"
-
1
l.store "Your email", "הדואל שלך"
-
1
l.store "Your message", "התגובה שלך"
-
1
l.store "Comment Markup Help", "עזרה על שפת הטקסט"
-
1
l.store "Preview comment", "תצוגה מקדימה של התגובה"
-
1
l.store "leave url/email", "השאר כתובת/דואל"
-
-
# app/views/articles/_comment_failed.html.erb
-
1
l.store "Oops, something wrong happened, the comment could not be saved", "אופס, משהו השתבש, התגובה אינה יכולה להישמר"
-
-
# app/views/articles/_trackback.html.erb
-
1
l.store "From", "מאת"
-
-
# app/views/articles/archives.html.erb
-
1
l.store "No articles found", "לא נמצאו כתבות"
-
1
l.store "posted in", "נשלח ב-"
-
-
# app/views/articles/comment_preview.html.erb
-
1
l.store "is about to say", "עומד לומר"
-
-
# app/views/articles/groupings.html.erb
-
1
l.store "There are", "ישנם"
-
-
# app/views/articles/read.html.erb
-
1
l.store "Leave a response", "הגב"
-
1
l.store "Trackbacks", "עוקבים חזרה"
-
1
l.store "Use the following link to trackback from your own site", "השתמש בקישור הבא כדי לעקוב-חזרה מהאתר שלך"
-
1
l.store "RSS feed for this post", "מזין RSS לכתבה זו"
-
1
l.store "trackback uri", "כתובת העוקב-חזרה"
-
1
l.store "Comments are disabled", "התגובות מבוטלות"
-
-
# app/views/authors/show.html.erb
-
1
l.store "Web site:", ""
-
1
l.store "MSN:", ""
-
1
l.store "Yahoo:", ""
-
1
l.store "Jabber:", ""
-
1
l.store "AIM:", ""
-
1
l.store "Twitter:", ""
-
1
l.store "About %s", ""
-
1
l.store "This author has not published any article yet", ""
-
-
# app/views/comments/show.html.erb
-
1
l.store "This comment has been flagged for moderator approval.", "התגובה הזו ממתינה לאישור"
-
-
# app/views/layouts/administration.html.erb
-
1
l.store "%s »", ""
-
1
l.store "is proudly powered by", ""
-
1
l.store "Dashboard", "סקירה"
-
-
# app/views/setup/index.html.erb
-
1
l.store "Welcome", ""
-
1
l.store "Welcome to your %s blog setup. Just fill in your blog title and your email, and Typo will take care of everything else", ""
-
-
# app/views/shared/_confirm.html.erb
-
1
l.store "Congratulation!", ""
-
1
l.store "You have successfully signed up", ""
-
1
l.store "<strong>Login:</strong> %s", ""
-
1
l.store "<strong>Password:</strong> %s", ""
-
1
l.store "Don't lose the mail sent at %s or you won't be able to login anymore", ""
-
1
l.store "Proceed to %s", ""
-
1
l.store "admin", ""
-
-
# app/views/shared/_search.html.erb
-
1
l.store "Live Search", ""
-
-
# test/mocks/themes/typographic/layouts/default.html.erb
-
1
l.store "Powered by %s", "מופעל על ידי %s"
-
1
l.store "Designed by %s ", "עוצב על ידי %s"
-
-
# test/mocks/themes/typographic/views/articles/_article.html.erb
-
1
l.store "Continue reading...", "המשך לקרוא..."
-
1
l.store "This entry was posted on %s", "כתבה זו פורסמה בתאריך %s"
-
1
l.store "and %s", "ו-%s"
-
1
l.store "You can follow any response to this entry through the %s", "תוכל לעקוב אחרי התגובות במאמר זו דרך %s"
-
1
l.store "Atom feed", "מזין Atom"
-
1
l.store "You can leave a %s", "תוכל להשאיר %s"
-
1
l.store "or a %s from your own site", "או %s מהאתר שלך"
-
1
l.store "Read full article", "קרא את הכתבה המלאה"
-
1
l.store "comment", "תגובה"
-
1
l.store "trackback", "עוקב-חזרה"
-
-
# test/mocks/themes/typographic/views/articles/_comment.html.erb
-
1
l.store "later", "אחר כך"
-
-
# test/mocks/themes/typographic/views/articles/_comment_form.html.erb
-
1
l.store "Leave a comment", "הגב"
-
1
l.store "Name %s", "שם %s"
-
1
l.store "enabled", "מאופשר"
-
1
l.store "never displayed", "אל תציג לעולפ"
-
1
l.store "Website", "אתר"
-
1
l.store "Textile enabled", "Textile מאופשר"
-
1
l.store "Markdown enabled", "Markdown מאופשר"
-
1
l.store "required", "נחוץ"
-
-
# test/mocks/themes/typographic/views/articles/_comment_list.html.erb
-
1
l.store "No comments", "ללא תגובות"
-
-
# test/mocks/themes/typographic/views/shared/_search.html.erb
-
1
l.store "Searching", "מחפש"
-
-
# themes/dirtylicious/layouts/default.html.erb
-
1
l.store "Home", "בית"
-
1
l.store "About", "אודות"
-
1
l.store "Designed by %s ported to typo by %s ", "עןצב על ידי %s והותאם ל-Typo על ידי %s"
-
-
# themes/scribbish/layouts/default.html.erb
-
1
l.store "styled with %s", "עוצב על ידי %s"
-
-
# themes/scribbish/views/articles/_article.html.erb
-
1
l.store "Meta", "פרטים"
-
1
l.store "permalink", "קישור קבוע"
-
-
# themes/true-blue-3/helpers/theme_helper.rb
-
1
l.store "You are here: ", ""
-
1
l.store "%d comment", ""
-
-
# themes/true-blue-3/views/articles/_article.html.erb
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M", ""
-
-
# themes/true-blue-3/views/articles/_comment.html.erb
-
1
l.store "By", "על ידי"
-
1
l.store "later:", ""
-
-
# themes/true-blue-3/views/articles/_comment_form.html.erb
-
1
l.store "Email address", ""
-
1
l.store "Your website", ""
-
-
# themes/true-blue-3/views/articles/read.html.erb
-
1
l.store "If you liked this article you can %s", ""
-
1
l.store "add me to Twitter", ""
-
1
l.store "Trackbacks for", "עוקבי חזרה עבור"
-
-
# themes/true-blue-3/views/articles/search.html.erb
-
1
l.store "Search results for:", ""
-
-
# themes/true-blue-3/views/categories/index.html.erb
-
1
l.store "Read all articles in %s", ""
-
-
# themes/true-blue-3/views/categories/show.html.erb
-
1
l.store "Previous", ""
-
1
l.store "Next", ""
-
-
# vendor/plugins/archives_sidebar/views/content.rhtml
-
1
l.store "Archives", "ארכיון"
-
-
# vendor/plugins/authors_sidebar/views/content.rhtml
-
1
l.store "Authors", ""
-
-
# vendor/plugins/xml_sidebar/views/content.rhtml
-
1
l.store "Syndicate", "עדכן"
-
1
l.store "Category %s", ""
-
1
l.store "Tag %s", ""
-
-
# Obsolete translations
-
1
l.store "", ""
-
1
l.store " Administration", "ניהול"
-
1
l.store " Signup", "הירשם"
-
1
l.store "(this will be shown publically if supplied)", "(זה יוצג בבלוג אם יינתן)"
-
1
l.store "Action", "פעולות"
-
1
l.store "Add Extended Content", "הוסף תוכן מורחב"
-
1
l.store "Add MetaData", "הוסף מידע-על"
-
1
l.store "Allow non-ajax comments", "אפשר תגובות ללא Ajax"
-
1
l.store "Are you sure you want to delete this %s?", "האם אתה בטוח שברצונך למחוק את % הזו?"
-
1
l.store "Are you sure you want to delete this filter", "האם אתה בטוח שברצונך למחוק מסנן זה?"
-
1
l.store "Are you sure you want to delete this item?", "האם אתה בטוח שברצונך למחוק פריט זה ?"
-
1
l.store "Article was successfully saved at ", "הכתבה נשמרה בהצלחה"
-
1
l.store "Blacklist", "רשימה שחורה"
-
1
l.store "Blacklist Patterns", "תבניות הרשימה השחורה"
-
1
l.store "BlacklistPattern was successfully created.", "התבנית נוצרה בהצלחה."
-
1
l.store "BlacklistPattern was successfully updated.", "התבנית עודכנה בהצלחה."
-
1
l.store "Blog publisher", "כותב"
-
1
l.store "Body", "גוף הכתבה"
-
1
l.store "By default, Typo generates static HTML pages for your posts. However, if you plan to publish posts in the futur, you may want to use semi dynamic caching", "כברירת מחדל, Typo מייצרת דפי HTML סטטיים עבור הכתבות שלך. למרות זאת, אם אתה מעוניין לפרסם כתבות בעתיד, ייתכן כי תרצי מטמון חצי דינמי"
-
1
l.store "Cache was cleared", "המטמון נוקה"
-
1
l.store "Category", "קטגורייה"
-
1
l.store "Category could not be created.", "לא ניתן ליצור את הקטגורייה"
-
1
l.store "Category was successfully created.", "הקטגורייה נוצרה בהצלחה"
-
1
l.store "Category was successfully updated.", "הקטגורייה עודכנה בהצלחה"
-
1
l.store "Change your blog presentation", "לשנות את עיצוב הבלוג"
-
1
l.store "Choose caching methode", "בחר את שיטת המטמון"
-
1
l.store "Choose password", "בחר סיסמה"
-
1
l.store "Choose theme", "בחר עיצוב"
-
1
l.store "Choose themes", "בחר עיצובים"
-
1
l.store "Comment Excerpt", "תקציר התגובה"
-
1
l.store "Comments and Trackbacks for", "תגובות ועוקבים-חזרה עבור"
-
1
l.store "Comments for %s (%s)", "תגובות עבור %s (%s)"
-
1
l.store "Confirm Classification of Checked Items", "אמת סיווג של פריטים"
-
1
l.store "Confirm password", "אמת סיסמה"
-
1
l.store "Content", "תוכן"
-
1
l.store "Contributor", "תורם"
-
1
l.store "Copyright Information", "מידע על זכויות יוצרים"
-
1
l.store "Create Text Filter", "צור מסנן טקסט"
-
1
l.store "Created at", "נוצר בתאריך"
-
1
l.store "Delete this filter", "מחק מסנן זה"
-
1
l.store "Desired login", "שם המשתמש הרצוי"
-
1
l.store "Drafts:", "טיוטות"
-
1
l.store "Duration", "משך זמן"
-
1
l.store "Edit Category", "ערוך קטגוריות"
-
1
l.store "Edit MetaData", "ערוך מידע-על"
-
1
l.store "Edit content", "ערוך תוכן"
-
1
l.store "Editing pattern", "עריכת תבנית"
-
1
l.store "Editing textfilter", "עריכת מסנן טקסט"
-
1
l.store "Editing trackback", "ערוך עוקב-חזרה"
-
1
l.store "Empty Fragment Cache", "נקה מטמון קטעים"
-
1
l.store "Explicit", "באופן מפורש"
-
1
l.store "Filters", "מסננים"
-
1
l.store "General options", "הגדרות כלליות"
-
1
l.store "HTML was cleared", "מטמון HTML נוקה"
-
1
l.store "Help", "עזרה"
-
1
l.store "IP", "כתובת IP"
-
1
l.store "Key Words", "מילות מפתח"
-
1
l.store "Last Comments", "תגובות אחרונות"
-
1
l.store "Last posts", "כתבות אחרונות"
-
1
l.store "Live Search:", "חיפוש"
-
1
l.store "Macro Filter Help", "עזרת צסנן מאקרו"
-
1
l.store "Macros", "מאקרו"
-
1
l.store "Manage", "נהל"
-
1
l.store "Manage categories", "נהל קטגוריות"
-
1
l.store "Manage posts", "נהל כתבות"
-
1
l.store "Manage uploads", "נהל העלאות"
-
1
l.store "Markup", "שפת הטקסט"
-
1
l.store "Markup type", "סוג שפת הטקסט"
-
1
l.store "MetaData", "מידע -על"
-
1
l.store "Metadata was successfully removed.", "מידע-העל נמחק בהצלחה"
-
1
l.store "No", "לא"
-
1
l.store "Not published by Apple", "לא פורסם על ידי Apple"
-
1
l.store "Notification", "עדכונים"
-
1
l.store "Notified", "מעודכנים"
-
1
l.store "Number of Articles", "מספר מאמרים"
-
1
l.store "Number of Comments", "מספר תגובות"
-
1
l.store "Offline", "לא מוצג"
-
1
l.store "Older posts", "כתבות ישנות יותר"
-
1
l.store "Optional Name", "שם(לא חובה)"
-
1
l.store "Options", "אפשרויות"
-
1
l.store "Parameters", "פרמטרים"
-
1
l.store "Pattern", "תבנית"
-
1
l.store "Podcast", "רשימת השמעה"
-
1
l.store "Podcasts", "רשימות השמעה"
-
1
l.store "Post-processing filters", "מסנני עיבוד מאוחר"
-
1
l.store "Posted date", "תאריך שליחה"
-
1
l.store "Posts", "כתבות"
-
1
l.store "Profile was successfully created.", "הדיוקן נוצר בהצלחה."
-
1
l.store "Profile was successfully updated.", "הדיוקן עודכן בהצלחה."
-
1
l.store "Read", "קרא"
-
1
l.store "Read more", "קרא עוד"
-
1
l.store "Rebuild cached HTML", "בנה מחדש מטמון HTML"
-
1
l.store "Recent comments", "תגובות אחרונות"
-
1
l.store "Recent trackbacks", "עוקבים-חזרה אחרונים"
-
1
l.store "Regex", "ביטוי רגולרי"
-
1
l.store "Remove iTunes Metadata", "מחק מידע-על של iTunes"
-
1
l.store "Resource MetaData", "מידע-על על המשאב"
-
1
l.store "Save Settings", "שמור הגדרות"
-
1
l.store "Set iTunes metadata for this enclosure", "הגדר מידע-על של iTunes למעטפת זו"
-
1
l.store "Setting for channel", "הגדרות הערוץ"
-
1
l.store "Settings", "הגדרות"
-
1
l.store "Show content", "הצג תוכן"
-
1
l.store "Signup successful", "ההרשמה הצליחה"
-
1
l.store "Statistics", "סטטיסטיקה"
-
1
l.store "String", "מחרוזת"
-
1
l.store "Subtitle", "תת כותרת"
-
1
l.store "Summary", "סיכום"
-
1
l.store "System information", "נתוני המערכת"
-
1
l.store "Text Filter Details", "פרטי מסנן טקסט"
-
1
l.store "Text Filter Help", "עזרת מסנן הטקסט"
-
1
l.store "Text Filters", "מסנני טקסט"
-
1
l.store "TextFilter was successfully updated.", "מסנן הטקסט עודכן בהצלחה."
-
1
l.store "The below settings act as defaults when you choose to publish an enclosure with iTunes metadata", "ההגדרות למטה משמשות כברירת מחדל בעת שאתה בוחר לפרסם מעטפת עם מידע-על של iTunes"
-
1
l.store "Themes", "עיצובים"
-
1
l.store "There is no %s yet. Why don't you start and create one?", "אין עדיין %s. למה לא תיצור אחד חדש?"
-
1
l.store "This place gives you a quick overview of what happens on your Typo blog and what you can do. Maybe will you want to %s , %s or %s.", "כאן תמצא סקירה קצרה על מה שקורה בבלוג שלך ומה תוכל לעשות. אולי תרצה %s, %s , %s"
-
1
l.store "Trackback was successfully updated.", "העוקב-חזרה עודכן בהצלחה."
-
1
l.store "Type", "סוג"
-
1
l.store "Typo administrator", "מנהל"
-
1
l.store "Typo documentation", "תיעוד Typo"
-
1
l.store "URL", "כתובת"
-
1
l.store "Update your profile or change your password", "לעדכן את פרטי חשבונך או לשנות את סיסמתך"
-
1
l.store "Use semi static caching (default)", "השתמש במטמון חצי סטטי(ברירת מחדל)"
-
1
l.store "Use simple editor without live preview", "השתמש בעורך פשוט ללא תצוגה מקדימה חיה"
-
1
l.store "Use static HTML page caching ", "השתמש במטמון HTML סטטי"
-
1
l.store "View", "הצג"
-
1
l.store "Write a page", "כתוב דף"
-
1
l.store "Write a posts", "כתוב כתבה"
-
1
l.store "XML Syndication", "עידכוני XML"
-
1
l.store "You can optionally disable non-Ajax comments. Typo will always use Ajax for comment submission if Javascript is enabled, so non-Ajax comments are either from spammers or users without Javascript.", "תוכל לבטל תגובות ללא Ajax . המערכת תמיד משתמשת ב-Ajax עבור תגובות אם Javascript מאופשר, ולכן תגובות ללא Ajax הם תמיד מספאמרים או ממשתמשים ללא Javascript"
-
1
l.store "add a comment", "הוסף תגובה"
-
1
l.store "add new", "הוסף חדש"
-
1
l.store "by %s on %s", "מאת %s על %s"
-
1
l.store "edit", "ערוך"
-
1
l.store "log in", "התחבר"
-
1
l.store "log out", "התנתק"
-
1
l.store "on", "על"
-
1
l.store "save", "שמור"
-
1
l.store "seperate with spaces", "הפרד עם רווחים"
-
1
l.store "show", "הצג"
-
1
l.store "via email", "באמצעות דואל"
-
1
l.store "with %s AER OS XK iconset %s", "עם %s AER OS XK iconset %s, תורגם על ידי <a href='http://www.zebrot.com'>זברות</a>."
-
1
l.store "your blog", "הבלוג שלך"
-
end
-
# coding: utf-8
-
1
Localization.define("it_IT") do |l|
-
-
# app/controllers/accounts_controller.rb
-
1
l.store "Login successful", ""
-
1
l.store "Login unsuccessful", ""
-
1
l.store "An email has been successfully sent to your address with your new password", ""
-
1
l.store "Oops, something wrong just happened", ""
-
1
l.store "Successfully logged out", "Sei correttamente uscito"
-
1
l.store "login", ""
-
1
l.store "signup", ""
-
1
l.store "Recover your password", ""
-
-
# app/controllers/admin/categories_controller.rb
-
1
l.store "Category was successfully saved.", ""
-
1
l.store "Category could not be saved.", ""
-
-
# app/controllers/admin/content_controller.rb
-
1
l.store "Error, you are not allowed to perform this action", ""
-
1
l.store "Preview", ""
-
1
l.store "Article was successfully created", ""
-
1
l.store "Article was successfully updated.", ""
-
-
# app/controllers/admin/feedback_controller.rb
-
1
l.store "Deleted", ""
-
1
l.store "Not found", ""
-
1
l.store "Deleted %d item(s)", ""
-
1
l.store "Marked %d item(s) as Ham", ""
-
1
l.store "Marked %d item(s) as Spam", ""
-
1
l.store "Confirmed classification of %s item(s)", "Conferma classificazione di %s elementi"
-
1
l.store "Not implemented", "Non implementato"
-
1
l.store "All spam have been deleted", ""
-
1
l.store "Comment was successfully created.", ""
-
1
l.store "Comment was successfully updated.", ""
-
-
# app/controllers/admin/pages_controller.rb
-
1
l.store "Page was successfully created.", ""
-
1
l.store "Page was successfully updated.", ""
-
-
# app/controllers/admin/profiles_controller.rb
-
1
l.store "User was successfully updated.", ""
-
-
# app/controllers/admin/resources_controller.rb
-
1
l.store "Error occurred while updating Content Type.", "Si e' verificato un errore mentre aggiornavo il tipo di contenuto."
-
1
l.store "complete", "completato"
-
1
l.store "File uploaded: ", "File inviata: "
-
1
l.store "Unable to upload", "Impossibile inviare"
-
1
l.store "Metadata was successfully updated.", "I metadata sono stati correttamente aggiornati."
-
1
l.store "Not all metadata was defined correctly.", "Non tutti i metadata sono stati definiti correttamente."
-
1
l.store "Content Type was successfully updated.", "Il tipo di contenuto e' stato correttamente aggiornato."
-
-
# app/controllers/admin/settings_controller.rb
-
1
l.store "Please review and save the settings before continuing", ""
-
1
l.store "config updated.", "Configurazione aggiornata."
-
-
# app/controllers/admin/sidebar_controller.rb
-
1
l.store "It seems something went wrong. Maybe some of your sidebars are actually missing and you should either reinstall them or remove them manually", ""
-
-
# app/controllers/admin/tags_controller.rb
-
1
l.store "Tag was successfully updated.", ""
-
-
# app/controllers/admin/themes_controller.rb
-
1
l.store "Theme changed successfully", ""
-
1
l.store "You are not authorized to open this file", ""
-
1
l.store "File saved successfully", ""
-
1
l.store "Unable to write file", ""
-
-
# app/controllers/admin/users_controller.rb
-
1
l.store "User was successfully created.", ""
-
-
# app/controllers/application_controller.rb
-
1
l.store "Localization.rtl", ""
-
-
# app/controllers/articles_controller.rb
-
1
l.store "No posts found...", ""
-
1
l.store "Archives for", ""
-
1
l.store "Archives for ", ""
-
1
l.store ", Articles for ", ""
-
-
# app/controllers/grouping_controller.rb
-
1
l.store "page", ""
-
1
l.store "everything about", ""
-
-
# app/helpers/admin/base_helper.rb
-
1
l.store "Cancel", "Annulla"
-
1
l.store "Store", "Salva"
-
1
l.store "Delete", "Elimina"
-
1
l.store "delete", ""
-
1
l.store "Delete content", ""
-
1
l.store "Are you sure?", ""
-
1
l.store "Please select", ""
-
1
l.store "There are no %s yet. Why don't you start and create one?", ""
-
1
l.store "or", "o"
-
1
l.store "Save", "Salva"
-
1
l.store "Edit", "Modifica"
-
1
l.store "Show", ""
-
1
l.store "Published", "Pubblicato"
-
1
l.store "Unpublished", ""
-
1
l.store "Show help on Typo macros", ""
-
1
l.store "Back to overview", "Torna al sommario"
-
1
l.store "Name", "Nome"
-
1
l.store "Description", "Descrizione"
-
1
l.store "Tag", ""
-
-
# app/helpers/admin/categories_helper.rb
-
1
l.store "no articles", ""
-
1
l.store "1 article", ""
-
1
l.store "%d articles", ""
-
-
# app/helpers/admin/content_helper.rb
-
1
l.store "Destroy this draft", ""
-
-
# app/helpers/admin/feedback_helper.rb
-
1
l.store "Show conversation", ""
-
1
l.store "Flag as %s", ""
-
-
# app/helpers/application_helper.rb
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M:%%S GMT", ""
-
1
l.store "%%d. %%b", ""
-
1
l.store "%d comments", ""
-
1
l.store "no comments", "nessun commento"
-
1
l.store "1 comment", ""
-
1
l.store "no trackbacks", "nessun trackback"
-
1
l.store "1 trackback", ""
-
1
l.store "%d trackbacks", ""
-
-
# app/helpers/content_helper.rb
-
1
l.store "Posted in", ""
-
1
l.store "Tags", "Tags"
-
1
l.store "no posts", ""
-
1
l.store "1 post", ""
-
1
l.store "%d posts", ""
-
-
# app/models/article.rb
-
1
l.store "Original article writen by", ""
-
1
l.store "and published on", ""
-
1
l.store "direct link to this article", ""
-
1
l.store "If you are reading this article elsewhere than", ""
-
1
l.store "it has been illegally reproduced and without proper authorization", ""
-
-
# app/models/blog.rb
-
1
l.store "You need a permalink format with an identifier : %%month%%, %%year%%, %%day%%, %%title%%", ""
-
1
l.store "Can't end in .rss or .atom. These are reserved to be used for feed URLs", ""
-
-
# app/models/feedback/states.rb
-
1
l.store "Unclassified", ""
-
1
l.store "Just Presumed Ham", ""
-
1
l.store "Ham?", ""
-
1
l.store "Just Marked As Ham", ""
-
1
l.store "Ham", ""
-
1
l.store "Spam?", ""
-
1
l.store "Just Marked As Spam", ""
-
1
l.store "Spam", ""
-
-
# app/views/accounts/login.html.erb
-
1
l.store "I've lost my password", ""
-
1
l.store "Login", "Login"
-
1
l.store "Password", "Password"
-
1
l.store "Remember me", ""
-
1
l.store "Submit", ""
-
1
l.store "Back to ", "Torna al "
-
-
# app/views/accounts/recover_password.html.erb
-
1
l.store "Username or email", ""
-
-
# app/views/accounts/signup.html.erb
-
1
l.store "Create an account", ""
-
1
l.store "Username", "Nome Utente"
-
1
l.store "Email", "Email"
-
1
l.store "Signup", "Iscrizione"
-
-
# app/views/admin/categories/_categories.html.erb
-
1
l.store "Title", "Titolo"
-
1
l.store "Reorder", "Riordina"
-
1
l.store "Sort alphabetically", "Ordina alfabeticamente"
-
-
# app/views/admin/categories/_form.html.erb
-
1
l.store "Keywords", ""
-
-
# app/views/admin/categories/destroy.html.erb
-
1
l.store "Are you sure you want to delete the category ", "Sei sicuro di voler eliminare questa categoria "
-
1
l.store "Delete this category", "Elimina questa categoria"
-
1
l.store "Categories", ""
-
-
# app/views/admin/categories/index.html.erb
-
1
l.store "New Category", ""
-
-
# app/views/admin/categories/new.html.erb
-
1
l.store "%s Category", ""
-
-
# app/views/admin/categories/reorder.html.erb
-
1
l.store "(Done)", "(Termina)"
-
-
# app/views/admin/content/_attachment.html.erb
-
1
l.store "Remove", "Elimina"
-
1
l.store "Currently this article has the following resources", "Questo articolo ha le seguenti risorse"
-
1
l.store "You can associate the following resources", "Puoi associare le seguenti risorse"
-
1
l.store "Really delete attachment", "Vuoi realmente eliminare l'allegato"
-
1
l.store "Add Another Attachment", "Aggiungi un'altro allegato"
-
-
# app/views/admin/content/_drafts.html.erb
-
1
l.store "Drafts", ""
-
-
# app/views/admin/content/_form.html.erb
-
1
l.store "Publish settings", ""
-
1
l.store "Allow comments", "Permetti commenti"
-
1
l.store "Allow trackbacks", "Permetti trackbacks"
-
1
l.store "Password:", ""
-
1
l.store "Publish", "Pubblica"
-
1
l.store "Excerpt", ""
-
1
l.store "Excerpts are posts summaries that are shown on your blog homepage only but won’t appear on the post itself", ""
-
1
l.store "Uploads", "Uploads"
-
1
l.store "Post settings", ""
-
1
l.store "Publish at", "Pubblicato il"
-
1
l.store "Permalink", "Permalink"
-
1
l.store "Article filter", "Filtra articolo"
-
1
l.store "Save as draft", ""
-
-
# app/views/admin/content/destroy.html.erb
-
1
l.store "Are you sure you want to delete this article", "Sei sicuro di voler eliminare questo articolo"
-
1
l.store "Delete this article", "Elimina articolo"
-
1
l.store "Articles", ""
-
-
# app/views/admin/content/index.html.erb
-
1
l.store "New Article", ""
-
1
l.store "Search articles that contain ...", ""
-
1
l.store "Search", "Cerca"
-
1
l.store "Author", "Autore"
-
1
l.store "Date", ""
-
1
l.store "Feedback", "Commenti"
-
1
l.store "Filter", ""
-
1
l.store "Manage articles", ""
-
-
# app/views/admin/dashboard/_comments.html.erb
-
1
l.store "Latest Comments", ""
-
1
l.store "No comments yet", "Nessun commento"
-
1
l.store "By %s on %s", ""
-
-
# app/views/admin/dashboard/_inbound.html.erb
-
1
l.store "Inbound links", ""
-
1
l.store "No one made a link to you yet", ""
-
1
l.store " made a link to you saying ", ""
-
1
l.store "You have no internet connection", ""
-
-
# app/views/admin/dashboard/_overview.html.erb
-
1
l.store "This place gives you a quick overview of what happens on your Typo blog and what you can do. Maybe will you want to %s, %s or %s.", ""
-
1
l.store "update your profile or change your password", ""
-
1
l.store "You can also do a bit of design, %s or %s.", ""
-
1
l.store "change your blog presentation", ""
-
1
l.store "enable plugins", ""
-
1
l.store "write a post", ""
-
1
l.store "write a page", ""
-
-
# app/views/admin/dashboard/_popular.html.erb
-
1
l.store "Most popular", "I più popolari"
-
1
l.store "Nothing to show yet", ""
-
-
# app/views/admin/dashboard/_posts.html.erb
-
1
l.store "Latest Posts", ""
-
1
l.store "No posts yet, why don't you start and write one", ""
-
-
# app/views/admin/dashboard/_typo_dev.html.erb
-
1
l.store "Latest news from the Typo development blog", ""
-
1
l.store "Oh no, nothing new", ""
-
-
# app/views/admin/dashboard/_welcome.html.erb
-
1
l.store "Welcome back, %s!", ""
-
1
l.store "%d articles and %d comments were posted since your last connexion", ""
-
1
l.store "You're running Typo %s", ""
-
1
l.store "Total posts : %d", ""
-
1
l.store "Your posts : %d", ""
-
1
l.store "Total comments : %d", ""
-
1
l.store "Spam comments : %d", ""
-
-
# app/views/admin/feedback/_button.html.erb
-
1
l.store "Select action", ""
-
1
l.store "Delete Checked Items", "Elimina gli elementi selezionati"
-
1
l.store "Delete all spam", ""
-
1
l.store "Mark Checked Items as Spam", "Segna come spam"
-
1
l.store "Mark Checked Items as Ham", "Segna come confermati"
-
1
l.store "All comments", ""
-
1
l.store "Limit to ham", ""
-
1
l.store "Unapproved comments", ""
-
1
l.store "Limit to spam", "Limita a spam"
-
-
# app/views/admin/feedback/_form.html.erb
-
1
l.store "Add a comment", ""
-
1
l.store "Url", "Sito"
-
-
# app/views/admin/feedback/_spam.html.erb
-
1
l.store "This comment by <strong>%s</strong> was flagged as spam, %s?", ""
-
-
# app/views/admin/feedback/article.html.erb
-
1
l.store "Comments for %s", ""
-
1
l.store "Status", "Stato"
-
1
l.store "Comment Author", ""
-
1
l.store "Comment", ""
-
-
# app/views/admin/feedback/edit.html.erb
-
1
l.store "Comments for", "Commenti per"
-
-
# app/views/admin/feedback/index.html.erb
-
1
l.store "Search Comments and Trackbacks that contain", "Cerca commenti o trackback che contengono"
-
1
l.store "Article", ""
-
-
# app/views/admin/pages/_form.html.erb
-
1
l.store "Online", "Online"
-
1
l.store "Page settings", ""
-
1
l.store "Permanent link", ""
-
-
# app/views/admin/pages/destroy.html.erb
-
1
l.store "Pages","Pagine"
-
1
l.store "Are you sure you want to delete the page", "Sei sicuro di voler eliminare questa pagina"
-
1
l.store "Delete this page", "Elimina questa pagina"
-
-
# app/views/admin/pages/index.html.erb
-
1
l.store "New Page", ""
-
1
l.store "Manage pages", ""
-
-
# app/views/admin/profiles/index.html.erb
-
1
l.store "Your profile", ""
-
-
# app/views/admin/resources/_mime_edit.html.erb
-
1
l.store "Content Type", "Tipo di contenuto"
-
-
# app/views/admin/resources/_pages.html.erb
-
1
l.store "Previous page", "Pagina precedente"
-
1
l.store "Next page", "Pagina successiva"
-
-
# app/views/admin/resources/_upload.html.erb
-
1
l.store "Upload a File to your Site", "Invia un file al tuo sito"
-
1
l.store "File", "File"
-
1
l.store "Upload", "Invia"
-
-
# app/views/admin/resources/destroy.html.erb
-
1
l.store "Are you sure you want to delete this file", "Sei sicuro di voler eliminare questo file"
-
1
l.store "Delete this file from the webserver?", "Eliminare questo file dal webserver ?"
-
1
l.store "File Uploads", "Invia file"
-
-
# app/views/admin/resources/images.html.erb
-
1
l.store "Thumbnail", ""
-
1
l.store "File Size", "Dimensione"
-
1
l.store "Images", ""
-
1
l.store "right-click for link", "clicca col destro per il link"
-
-
# app/views/admin/resources/index.html.erb
-
1
l.store "Filename", "Nome del file"
-
-
# app/views/admin/settings/_submit.html.erb
-
1
l.store "Update settings", ""
-
-
# app/views/admin/settings/feedback.html.erb
-
1
l.store "Enable comments by default", "Abilita commenti di defaault"
-
1
l.store "Enable Trackbacks by default", "Abilita Trackbacks come default"
-
1
l.store "Enable feedback moderation", "Abilita la moderazione dei feedback"
-
1
l.store "You can enable site wide feeback moderation. If you do so, no comment or trackback will appear on your blog unless you validate it", "Puoi abilitare in modo globale la moderazione dei feedback. Se fai cio', nessun commento o trackback apparira' sul tuo blog se tu non lo autorizzi."
-
1
l.store "Comments filter", "Filtra commenti"
-
1
l.store "Enable gravatars", "Abilita gravatars"
-
1
l.store "Show your email address", "Mostra il tuo indirizzo mail"
-
1
l.store "Notifications", ""
-
1
l.store "Typo can notify you when new articles or comments are posted", "Il blog puo' notificarti l'inserimento di un nuovo articolo e/o commento"
-
1
l.store "Source Email", "Indirizzo mittente mail"
-
1
l.store "Email address used by Typo to send notifications", "Indirizzo email usato dal blog per inviare le notifiche"
-
1
l.store "Enabling spam protection will make typo compare the IP address of posters as well as the contents of their posts against local and remote blacklists. Good defense against spam bots", "Abilitando la protezione contro lo spam fa si che il blog compari gli IP di chi invia i commenti e anche il loro contenuto con una blacklist remota. E' una buona difesa contro gli spam robot"
-
1
l.store "Enable spam protection", "Abilita la protezione spam"
-
1
l.store "Akismet Key", "Chiave Akismet"
-
1
l.store "Typo can (optionally) use the %s spam-filtering service. You need to register with Akismet and receive an API key before you can use their service. If you have an Akismet key, enter it here", ""
-
1
l.store "Disable trackbacks site-wide", ""
-
1
l.store "This setting allows you to disable trackbacks for every article in your blog. It won't remove existing trackbacks, but it will prevent any further attempt to add a trackback anywhere on your blog.", ""
-
1
l.store "Disable comments after", "Disabilita commenti dopo "
-
1
l.store "days", "giorni"
-
1
l.store "Set to 0 to never disable comments", "Usa 0 per non disabilitare mai i commenti"
-
1
l.store "Max Links", "Max Links"
-
1
l.store "Typo will automatically reject comments and trackbacks which contain over a certain amount of links in them", "Il blog cancellera' automaticamente commenti e trackbacks che contengono un certo numero di link"
-
1
l.store "Set to 0 to never reject comments", "Inserisci 0 per accettare sempre i commenti."
-
1
l.store "Feedback settings", ""
-
-
# app/views/admin/settings/index.html.erb
-
1
l.store "Your blog", "Tuo blog "
-
1
l.store "Blog name", "Nome blog"
-
1
l.store "Blog subtitle", "Sottotitolo del blog"
-
1
l.store "Blog URL", "Indirizzo Blog"
-
1
l.store "Language", "Lingua"
-
1
l.store "Allow users to register", ""
-
1
l.store "You can allow users to register to your blog. By default, they will register as contributors, an unpriviledged account level which grant them no rights but own a profile on the site. If you don't want users to register, you can thus add them by yourself in the users part of this admin.", ""
-
1
l.store "Items to display in admin lists", ""
-
1
l.store "Publishing options", ""
-
1
l.store "Display", "Mostra"
-
1
l.store "articles on my homepage by default", "articoli nella homepage"
-
1
l.store "articles in my news feed by default", "articoli nei miei rss feed"
-
1
l.store "Show full article on feed", "Visualizza articolo completo su feed"
-
1
l.store "Feedburner ID", ""
-
1
l.store "General settings", "Configurazione generale"
-
1
l.store "You can use your Google Feedburner account instead of Typo feed URL. To enable this, fill this form with your Feedburner ID.", ""
-
-
# app/views/admin/settings/seo.html.erb
-
1
l.store "Search Engine Optimisation", "Ottimizzazione motori di ricerca"
-
1
l.store "Format of permalink", ""
-
1
l.store "Google Analytics", ""
-
1
l.store "Google verification link", ""
-
1
l.store "Meta description", ""
-
1
l.store "Meta keywords", ""
-
1
l.store "Use RSS description", ""
-
1
l.store "Index categories", ""
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every category page, removing them from search engines and preventing duplicate content issues", ""
-
1
l.store "Index tags", ""
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every tags page, removing them from search engines and preventing duplicate content issues", ""
-
1
l.store "Robots.txt", ""
-
1
l.store "You robots.txt file is not writeable. Typo won't be able to write it", ""
-
1
l.store "Search Engine Optimization", ""
-
1
l.store "This will display", ""
-
1
l.store "at the bottom of each of your post in the RSS feed", ""
-
-
# app/views/admin/settings/update_database.html.erb
-
1
l.store "Information", "Informazioni"
-
1
l.store "Current database version", "Versione corrente del database"
-
1
l.store "New database version", "Nuova versione del database"
-
1
l.store "Your database supports migrations", "Il tuo database supporta le migrazioni"
-
1
l.store "Needed migrations", "Necessarie migrazioni"
-
1
l.store "You are up to date!", "Aggiornato!"
-
1
l.store "Update database now", "Aggiorna il tuo database ora"
-
1
l.store "may take a moment", "attendi alcuni istanti"
-
1
l.store "Database migration", "Migrazione del database"
-
1
l.store "yes", "si"
-
1
l.store "no", "no"
-
-
# app/views/admin/settings/write.html.erb
-
1
l.store "Send trackbacks", "Invia trackbacks"
-
1
l.store "When publishing articles, Typo can send trackbacks to websites that you link to. This should be disabled for private blogs as it will leak non-public information to sites that you're discussing. For public blogs, there's no real point in disabling this.", "Quando pubblichi gli articoli, e' possibile inviare trackback ai siti di cui fornisci l'url. E' possibile disabilitare questa funzione nel caso di blog privato di cui non si vogliono condividere le informazioni. Per blog pubblici non esiste una necessita' reale di disabilitare questa funzione."
-
1
l.store "URLs to ping automatically", "Indirizzi da pingare automaticamente"
-
1
l.store "Latitude, Longitude", "Latitudine, Longitudine"
-
1
l.store "your lattitude and longitude", "la tua latitudine e longitudine"
-
1
l.store "exemple", "esempio"
-
1
l.store "Write", "Scrivi"
-
-
# app/views/admin/sidebar/_availables.html.erb
-
1
l.store "You have no plugins installed", "Non hai plugins installati"
-
-
# app/views/admin/sidebar/_publish.html.erb
-
1
l.store "Changes published", "Modifiche pubblicate"
-
-
# app/views/admin/sidebar/_target.html.erb
-
1
l.store "Drag some plugins here to fill your sidebar", "Trascina alcuni plugins qui per popolare la tua sidebar"
-
-
# app/views/admin/sidebar/index.html.erb
-
1
l.store "Drag and drop to change the sidebar items displayed on this blog. To remove items from the sidebar just click remove Changes are saved immediately, but not activated until you click the 'Publish' button", "Trascina e rilascia per cambiare gli elementi visualizzati nella sidebar del tuo blog. Per rimuorverli clicca su annulla Cambiamenti perche' comunque non sono salvati automaticamente ma devi cliccare il bottone 'Pubblica'"
-
1
l.store "Available Items", "Elementi disponibili"
-
1
l.store "Active Sidebar items", "Attiva elementi Sidebar"
-
1
l.store "Get more plugins", ""
-
1
l.store "Sidebar", ""
-
1
l.store "Publish changes", "Pubblica cambiamenti"
-
-
# app/views/admin/tags/_form.html.erb
-
1
l.store "Display name", "Nome visualizzato"
-
-
# app/views/admin/tags/destroy.html.erb
-
1
l.store "Are you sure you want to delete the tag", ""
-
1
l.store "Delete this tag", ""
-
-
# app/views/admin/tags/edit.html.erb
-
1
l.store "Editing ", ""
-
1
l.store "Back to tags list", ""
-
-
# app/views/admin/tags/index.html.erb
-
1
l.store "Display Name", ""
-
1
l.store "Manage tags", ""
-
-
# app/views/admin/themes/catalogue.html.erb
-
1
l.store "Sorry the theme catalogue is not available", ""
-
1
l.store "Theme catalogue", ""
-
-
# app/views/admin/themes/editor.html.erb
-
1
l.store "Theme editor", "Editor dei temi"
-
-
# app/views/admin/themes/index.html.erb
-
1
l.store "Active theme", "Tema Attivo"
-
1
l.store "Get more themes", ""
-
1
l.store "You can download third party themes from officially supported %s ", ""
-
1
l.store "Typogarden", ""
-
1
l.store "To install a theme you just need to upload the theme folder into your themes directory. Once a theme is uploaded, you should see it on this page.", ""
-
1
l.store "Choose a theme", "Seleziona un tema"
-
-
# app/views/admin/users/_form.html.erb
-
1
l.store "Account settings", ""
-
1
l.store "Password confirmation", ""
-
1
l.store "Profile", "Profilo"
-
1
l.store "User's status", ""
-
1
l.store "Active", ""
-
1
l.store "Inactive", ""
-
1
l.store "Profile Settings", ""
-
1
l.store "Firstname", ""
-
1
l.store "Lastname", ""
-
1
l.store "Nickname", ""
-
1
l.store "Editor", ""
-
1
l.store "Use simple editor", ""
-
1
l.store "Use visual rich editor", ""
-
1
l.store "Send notification messages via email", "Invia notifiche via mail"
-
1
l.store "Send notification messages when new articles are posted", "Invia notifiche quando viene pubblicato un nuovo articolo"
-
1
l.store "Send notification messages when comments are posted", "Invia notifiche quando viene inserito un nuovo commento"
-
1
l.store "Contact Options", ""
-
1
l.store "Your site", ""
-
1
l.store "display url on public profile", ""
-
1
l.store "Your MSN", ""
-
1
l.store "display MSN ID on public profile", ""
-
1
l.store "Your Yahoo ID", ""
-
1
l.store "display Yahoo! ID on public profile", ""
-
1
l.store "Your Jabber ID", ""
-
1
l.store "display Jabber ID on public profile", ""
-
1
l.store "Your AIM id", ""
-
1
l.store "display AIM ID on public profile", ""
-
1
l.store "Your Twitter username", ""
-
1
l.store "display twitter on public profile", ""
-
1
l.store "Tell us more about you", ""
-
-
# app/views/admin/users/destroy.html.erb
-
1
l.store "Really delete user", "Veramente eliminare questo utente"
-
1
l.store "Yes", ""
-
1
l.store "Users", ""
-
-
# app/views/admin/users/edit.html.erb
-
1
l.store "Edit User", "Modifica utente"
-
-
# app/views/admin/users/index.html.erb
-
1
l.store "New User", "Nuovo utente"
-
1
l.store "Comments", ""
-
1
l.store "State", ""
-
1
l.store "%s user", ""
-
-
# app/views/admin/users/new.html.erb
-
1
l.store "Add User", "Aggiungi Utente"
-
-
# app/views/articles/_article.html.erb
-
1
l.store "Posted by", "Scritto da"
-
1
l.store "Continue reading", ""
-
-
# app/views/articles/_comment.html.erb
-
1
l.store "said", "dice"
-
1
l.store "This comment has been flagged for moderator approval. It won't appear on this blog until the author approves it", ""
-
-
# app/views/articles/_comment_box.html.erb
-
1
l.store "Your name", "Tuo nome "
-
1
l.store "Your email", "Tua email"
-
1
l.store "Your message", "Tuo messaggio"
-
1
l.store "Comment Markup Help", "Aiuto sul markup dei comemnti"
-
1
l.store "Preview comment", "Anteprima commento"
-
1
l.store "leave url/email", ""
-
-
# app/views/articles/_comment_failed.html.erb
-
1
l.store "Oops, something wrong happened, the comment could not be saved", ""
-
-
# app/views/articles/_trackback.html.erb
-
1
l.store "From", "Da"
-
-
# app/views/articles/archives.html.erb
-
1
l.store "No articles found", "Nessun articolo trovato"
-
1
l.store "posted in", ""
-
-
# app/views/articles/comment_preview.html.erb
-
1
l.store "is about to say", "sta per dire"
-
-
# app/views/articles/groupings.html.erb
-
1
l.store "There are", "Ci sono"
-
-
# app/views/articles/read.html.erb
-
1
l.store "Leave a response", "Commenta"
-
1
l.store "Trackbacks", ""
-
1
l.store "Use the following link to trackback from your own site", "Usa il link seguente per fare un trackback dal tuo sito"
-
1
l.store "RSS feed for this post", "Feed RSS per questo post"
-
1
l.store "trackback uri", "trackback urk"
-
1
l.store "Comments are disabled", "Commenti disabilitati"
-
-
# app/views/authors/show.html.erb
-
1
l.store "Web site:", ""
-
1
l.store "MSN:", ""
-
1
l.store "Yahoo:", ""
-
1
l.store "Jabber:", ""
-
1
l.store "AIM:", ""
-
1
l.store "Twitter:", ""
-
1
l.store "About %s", ""
-
1
l.store "This author has not published any article yet", ""
-
-
# app/views/comments/show.html.erb
-
1
l.store "This comment has been flagged for moderator approval.", ""
-
-
# app/views/layouts/administration.html.erb
-
1
l.store "%s »", ""
-
1
l.store "is proudly powered by", ""
-
1
l.store "Dashboard", ""
-
-
# app/views/setup/index.html.erb
-
1
l.store "Welcome", ""
-
1
l.store "Welcome to your %s blog setup. Just fill in your blog title and your email, and Typo will take care of everything else", ""
-
-
# app/views/shared/_confirm.html.erb
-
1
l.store "Congratulation!", ""
-
1
l.store "You have successfully signed up", ""
-
1
l.store "<strong>Login:</strong> %s", ""
-
1
l.store "<strong>Password:</strong> %s", ""
-
1
l.store "Don't lose the mail sent at %s or you won't be able to login anymore", ""
-
1
l.store "Proceed to %s", ""
-
1
l.store "admin", ""
-
-
# app/views/shared/_search.html.erb
-
1
l.store "Live Search", ""
-
-
# test/mocks/themes/typographic/layouts/default.html.erb
-
1
l.store "Powered by %s", ""
-
1
l.store "Designed by %s ", ""
-
-
# test/mocks/themes/typographic/views/articles/_article.html.erb
-
1
l.store "Continue reading...", ""
-
1
l.store "This entry was posted on %s", ""
-
1
l.store "and %s", ""
-
1
l.store "You can follow any response to this entry through the %s", ""
-
1
l.store "Atom feed", ""
-
1
l.store "You can leave a %s", ""
-
1
l.store "or a %s from your own site", ""
-
1
l.store "Read full article", "Leggi articolo completo"
-
1
l.store "comment", ""
-
1
l.store "trackback", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment.html.erb
-
1
l.store "later", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment_form.html.erb
-
1
l.store "Leave a comment", ""
-
1
l.store "Name %s", ""
-
1
l.store "enabled", ""
-
1
l.store "never displayed", ""
-
1
l.store "Website", ""
-
1
l.store "Textile enabled", ""
-
1
l.store "Markdown enabled", ""
-
1
l.store "required", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment_list.html.erb
-
1
l.store "No comments", ""
-
-
# test/mocks/themes/typographic/views/shared/_search.html.erb
-
1
l.store "Searching", ""
-
-
# themes/dirtylicious/layouts/default.html.erb
-
1
l.store "Home", ""
-
1
l.store "About", ""
-
1
l.store "Designed by %s ported to typo by %s ", ""
-
-
# themes/scribbish/layouts/default.html.erb
-
1
l.store "styled with %s", ""
-
-
# themes/scribbish/views/articles/_article.html.erb
-
1
l.store "Meta", ""
-
1
l.store "permalink", ""
-
-
# themes/true-blue-3/helpers/theme_helper.rb
-
1
l.store "You are here: ", ""
-
1
l.store "%d comment", ""
-
-
# themes/true-blue-3/views/articles/_article.html.erb
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M", ""
-
-
# themes/true-blue-3/views/articles/_comment.html.erb
-
1
l.store "By", ""
-
1
l.store "later:", ""
-
-
# themes/true-blue-3/views/articles/_comment_form.html.erb
-
1
l.store "Email address", ""
-
1
l.store "Your website", ""
-
-
# themes/true-blue-3/views/articles/read.html.erb
-
1
l.store "If you liked this article you can %s", ""
-
1
l.store "add me to Twitter", ""
-
1
l.store "Trackbacks for", "Trackbacks per"
-
-
# themes/true-blue-3/views/articles/search.html.erb
-
1
l.store "Search results for:", ""
-
-
# themes/true-blue-3/views/categories/index.html.erb
-
1
l.store "Read all articles in %s", ""
-
-
# themes/true-blue-3/views/categories/show.html.erb
-
1
l.store "Previous", ""
-
1
l.store "Next", ""
-
-
# vendor/plugins/archives_sidebar/views/content.rhtml
-
1
l.store "Archives", "Archivi"
-
-
# vendor/plugins/authors_sidebar/views/content.rhtml
-
1
l.store "Authors", ""
-
-
# vendor/plugins/xml_sidebar/views/content.rhtml
-
1
l.store "Syndicate", "Syndicate"
-
1
l.store "Category %s", ""
-
1
l.store "Tag %s", ""
-
-
# Obsolete translations
-
1
l.store "%d Articles", ["Categoria", "%d Categorie"]
-
1
l.store "%d Categories", ["Categoria", "%d Categorie"]
-
1
l.store "%d Comments", ["Commento", "%d Commenti"]
-
1
l.store "%d Tags", ["Tag", "%d Tags"]
-
1
l.store "%d Trackbacks", ["Trackback", "%d Trackbacks"]
-
1
l.store "%d Users", ["Utente", "%d Utenti"]
-
1
l.store "A new message was posted to ", "Un nuovo messaggio inserito in "
-
1
l.store "AIM Presence", "Presenza AIM"
-
1
l.store "AIM Status", "Stato AIM"
-
1
l.store "Action", "Azioni"
-
1
l.store "Activate", "Attiva"
-
1
l.store "Add MetaData", "Aggiungi MetaData"
-
1
l.store "Add category", "Aggiungi categoria"
-
1
l.store "Add new user", "Aggiungi nuovo utente"
-
1
l.store "Add pattern", "Aggiungi modello"
-
1
l.store "Advanced settings", "Configurazione avanzata"
-
1
l.store "Allow non-ajax comments", "Abilita commenti non Ajax"
-
1
l.store "Are you sure you want to delete this filter", "Sei sicuro di voler eliminare questo filtro"
-
1
l.store "Are you sure you want to delete this item?", "Sei sicuro di voler eliminare questo elemento?"
-
1
l.store "Article Attachments", "Allegati articolo"
-
1
l.store "Article Body", "Contenuto articolo"
-
1
l.store "Article Content", "Contenuto Articolo"
-
1
l.store "Article Options", "Opzioni articolo"
-
1
l.store "Articles in", "Articoli in"
-
1
l.store "Attachments", "Allegati"
-
1
l.store "Basic settings", "Configurazione base"
-
1
l.store "Blacklist", "Blacklist"
-
1
l.store "Blacklist Patterns", "Lista nera"
-
1
l.store "Blog advanced settings", "Settaggi avanzati del blog"
-
1
l.store "Blog settings", "Configurazione blog"
-
1
l.store "Body", "Messaggio"
-
1
l.store "Cache", "Cache"
-
1
l.store "Cache was cleared", "Cache pulita"
-
1
l.store "Category", "Catégorie"
-
1
l.store "Category could not be created.", "La categoria non puo' essere creata"
-
1
l.store "Category title", "Nome della categoria"
-
1
l.store "Category was successfully created.", "Categoria correttamente creata"
-
1
l.store "Category was successfully updated.", "Categoria correttamente aggiornata"
-
1
l.store "Change you blog presentation", "Cambiare l'aspetto del tuo blog"
-
1
l.store "Choose password", "Password"
-
1
l.store "Choose theme", "Scegli un tema"
-
1
l.store "Comment Excerpt", "Contenuto commento"
-
1
l.store "Comments and Trackbacks for", "Commenti e trackbacks per"
-
1
l.store "Confirm Classification of Checked Items", "Conferma classificazione degli elementi selezionati"
-
1
l.store "Confirm password", "Conferma password"
-
1
l.store "Copyright Information", "Informazioni sul Copyright"
-
1
l.store "Create new Blacklist", "Aggiungi nuova lista nera"
-
1
l.store "Create new category", "Crea una nuova categoria"
-
1
l.store "Create new page", "Crea una nuova pagina"
-
1
l.store "Create new text filter", "Crea un nuovo filtro testo"
-
1
l.store "Creating comment", "Creazione commento"
-
1
l.store "Creating text filter", "Crea un nuovo filtro testo"
-
1
l.store "Creating trackback", "Creaa trackback"
-
1
l.store "Currently this article is listed in following categories", "Questo articolo e' presente nelle seguenti categorie"
-
1
l.store "Customize Sidebar", "Personalizza la Sidebar"
-
1
l.store "Delete this filter", "Elimina questo filtro"
-
1
l.store "Deleted %s item(s)", "Eliminati %s elementi"
-
1
l.store "Design", "Temi"
-
1
l.store "Desired login", "Nome utente"
-
1
l.store "Discuss", "Discussione"
-
1
l.store "Do you want to go to your blog?", "Vuoi andare al tuo blog?"
-
1
l.store "Duration", "Durata"
-
1
l.store "Edit Article", "Modifica articolo"
-
1
l.store "Edit MetaData", "Modifica MetaData"
-
1
l.store "Edit this article", "Modifica questo articolo"
-
1
l.store "Edit this category", "Modifica questa categoria"
-
1
l.store "Edit this filter", "Modifica questo filtro"
-
1
l.store "Edit this page", "Modifica questa pagina"
-
1
l.store "Edit this trackback", "Modifica questo trackback"
-
1
l.store "Editing User", "Modifica utente"
-
1
l.store "Editing category", "Modifica categoria"
-
1
l.store "Editing comment", "Modifica commento"
-
1
l.store "Editing page", "Modifica pagina"
-
1
l.store "Editing pattern", "Modifica modello"
-
1
l.store "Editing textfilter", "Modifica filtro testo"
-
1
l.store "Editing trackback", "Modifica trackback"
-
1
l.store "Empty Fragment Cache", "Svuota la cache"
-
1
l.store "Enable plugins", "Aggiungere plugins"
-
1
l.store "Explicit", "Contenuto esplicito"
-
1
l.store "Extended Content", "Contenuto esteso"
-
1
l.store "Feedback Search", "Ricerca feedback"
-
1
l.store "Filters", "Filtri"
-
1
l.store "General Settings", "Configurazione generale"
-
1
l.store "HTML was cleared", "l'HTML cancellato"
-
1
l.store "IP", "IP"
-
1
l.store "Jabber", "Jabber"
-
1
l.store "Jabber account", "Account Jabber"
-
1
l.store "Key Words", "Parole chiave"
-
1
l.store "Last Comments", "Ultimi commenti"
-
1
l.store "Last posts", "Ultimi articoli"
-
1
l.store "Last updated", "Ultimo aggiornamento"
-
1
l.store "Limit to unconfirmed", "Limita a non confermati"
-
1
l.store "Limit to unconfirmed spam", "Limita a spam non confermato"
-
1
l.store "Location", "Link permanente"
-
1
l.store "Logoff", "Esci"
-
1
l.store "Macro Filter Help", "Aiuto filtro macro"
-
1
l.store "Macros", "Macros"
-
1
l.store "Manage", "Gestisci"
-
1
l.store "Manage Articles", "Gestisci gli articoli"
-
1
l.store "Manage Categories", "Gestisci categorie"
-
1
l.store "Manage Pages", "Gestisci le pagine"
-
1
l.store "Manage Resources", "Gestici le risorse"
-
1
l.store "Manage Text Filters", "Gestisci i filtri del testo"
-
1
l.store "Markup", "Markup"
-
1
l.store "Markup type", "Tipo di markup"
-
1
l.store "MetaData", "MetaData"
-
1
l.store "Metadata was successfully removed.", "I metadata sono stati correttamente rimossi."
-
1
l.store "New post", "Nuovo post"
-
1
l.store "Not published by Apple", "Non pubblicato da Apple"
-
1
l.store "Notification", "Notifice"
-
1
l.store "Notified", "Notificato"
-
1
l.store "Notify on new articles", "Notifiche di nuovi articoli"
-
1
l.store "Notify on new comments", "Notifiche di nuovi commenti"
-
1
l.store "Notify via email", "Notifiche via mail"
-
1
l.store "Number of Articles", "Numero di articoli"
-
1
l.store "Number of Comments", "Numero di commenti"
-
1
l.store "Offline", "Offline"
-
1
l.store "Older posts", "Articoli precedenti"
-
1
l.store "Optional Extended Content", "Contenuto Esteso Opzionale"
-
1
l.store "Optional Name", "Nome opzionale"
-
1
l.store "Optional extended content", "Contenuto esteso opzionale"
-
1
l.store "Options", "Opzioni"
-
1
l.store "Page Body", "Contenuto della pagina"
-
1
l.store "Page Content", "Contenuto della pagina"
-
1
l.store "Page Options", "Opzioni pagina"
-
1
l.store "Parameters", "Parametri"
-
1
l.store "Password Confirmation", "Conferma password"
-
1
l.store "Pattern", "Modello"
-
1
l.store "Pictures from", "Immagine da"
-
1
l.store "Post", "Contenuto"
-
1
l.store "Post title", "Titolo articolo"
-
1
l.store "Post-processing filters", "Filtri di dopo il produzione"
-
1
l.store "Posted at", "Data pubblicazione"
-
1
l.store "Posted date", "Data di inserimento"
-
1
l.store "Posts", "Articoli"
-
1
l.store "Preview Article", "Anteprima articolo"
-
1
l.store "Read", "Mostra"
-
1
l.store "Read more", "Continua"
-
1
l.store "Rebuild cached HTML", "Ricostruisci l'html in cache"
-
1
l.store "Recent comments", "Commenti recenti"
-
1
l.store "Recent trackbacks", "Trackbacks recenti"
-
1
l.store "Regex", "Espressione regolare"
-
1
l.store "Remove iTunes Metadata", "Rimuovi i metadata iTunes"
-
1
l.store "Resource MetaData", "Risorse metadata"
-
1
l.store "Resource Settings", "Configurazione risorse"
-
1
l.store "Save Settings", "Salva configurazione"
-
1
l.store "See help text for this filter", "Visualizza aiuto per questo filtro"
-
1
l.store "Set iTunes metadata for this enclosure", "Setta i metadata iTunes per questa risorsa"
-
1
l.store "Setting for channel", "Configurazione per il canale"
-
1
l.store "Settings", "Configurazione"
-
1
l.store "Show Help", "Mostra l'aiuto"
-
1
l.store "Show this article", "Vedi l'articolo"
-
1
l.store "Show this category", "Mostra questa categoria"
-
1
l.store "Show this comment", "Mostra questo commento"
-
1
l.store "Show this page", "Mostra questa pagina"
-
1
l.store "Show this pattern", "Vedi modello"
-
1
l.store "Show this user", "Visualizza questo utente"
-
1
l.store "Spam Protection", "Protezione spam"
-
1
l.store "Spam protection", "Protezione contro lo spam"
-
1
l.store "String", "Stringa"
-
1
l.store "Subtitle", "Sottotitolo"
-
1
l.store "Summary", "Riassunto"
-
1
l.store "Text Filter Details", "Dettagli filtro testo"
-
1
l.store "Text Filters", "Filtri testo"
-
1
l.store "Textfilter", "Formato testo"
-
1
l.store "The below settings act as defaults when you choose to publish an enclosure with iTunes metadata", "Le impostazioni di seguito agiscono come default quando si sceglie di pubblicare delle risorse con metadati iTunes"
-
1
l.store "Themes", "Temi"
-
1
l.store "Things you can do", "Cose che puoi fare"
-
1
l.store "This comment has been flagged for moderator approval. It won't appear on this blog until the author approves it", "Questo commento e' stato segnalato per essere moderato. Non apparira' finche' gli amministratori non l'approvano"
-
1
l.store "This option let you choose between the simple admin interface or the complete one, displaying much more options and therefore more complicated to use. For advanced users only!", "Queste opzioni ti permettono di scegliere tra una amministrazione semplice o quella completa, mostrando maggiori opzioni anche complicate da usare. Solo per utenti esperti!!"
-
1
l.store "This setting allows you to disable trackbacks for every article in your blog. It won't remove existing trackbacks, but it will prevent any further attempt to add a trackback anywhere on your blog.", "Questo settaggio ti permette di disabilitare i trackbacks sugli articoli. Non rimuovera' i trackback esistenti, ma ti proteggera' in futuro."
-
1
l.store "Toggle Extended Content", "Mostra contenuto esteso"
-
1
l.store "Type", "Tipo"
-
1
l.store "Typo admin", "amministrazione typo"
-
1
l.store "Typo can (optionally) use the %s spam-filtering service. You need to register with Akismet and receive an API key before you can use their service. If you have an Akismet key, enter it here", "Il blog puo' opzionalmente utilizzare %s come filtro spam. Registrati ad Akismet e reiceverai una chiave API prima di poter utilizzare il loro servizio. Se hai una chiave Akismet, inseriscila qui"
-
1
l.store "Typo documentation", "Documentazione ufficale Typo"
-
1
l.store "Update your profile or change your password", "Aggiornare il tuo profilo o cambiare la tua password"
-
1
l.store "Upload a new File", "Invia un nuovo file"
-
1
l.store "Upload a new Resource", "Invia una nuova risorsa"
-
1
l.store "Uploaded", "Inviato"
-
1
l.store "User's articles", "Articoli dell'utente"
-
1
l.store "View", "Vedi"
-
1
l.store "View article on your blog", "Guarda l'articolo sul blog"
-
1
l.store "View comment on your blog", "Visualizza commento sul blog"
-
1
l.store "View page on your blog", "Visualizza pagina sul blog"
-
1
l.store "What can you do ?", "Cosa puoi fare?"
-
1
l.store "Which settings group would you like to edit", "Quale gruppo di settaggi vuoi modificare "
-
1
l.store "Write Page", "Creare Pagine"
-
1
l.store "Write a Page", "Scrivi un pagina"
-
1
l.store "Write a post", "Scrivere Articoli"
-
1
l.store "Write an Article", "Scrivi un articolo"
-
1
l.store "XML Syndication", "XML Syndication"
-
1
l.store "You are now logged out of the system", "Sei uscito dall'amministrazione"
-
1
l.store "You can add it to the following categories", "Puoi aggiungerlo alle seguenti categorie"
-
1
l.store "You can optionally disable non-Ajax comments. Typo will always use Ajax for comment submission if Javascript is enabled, so non-Ajax comments are either from spammers or users without Javascript.", "Puoi disabilitare i commenti non Ajax. Il blog usera' Ajax per l'invio dei commenti se i Javascript sono abilitati, in questo modo i commenti non Ajax saranno bloccati dagli spammer e dagli utenti senza javascript."
-
1
l.store "add new", "aggiungi nuovo"
-
1
l.store "by", "da"
-
1
l.store "log out", "esci"
-
1
l.store "no ", "no "
-
1
l.store "on", "su"
-
1
l.store "seperate with spaces", "séparez-les par des espaces"
-
1
l.store "via email", "per mail"
-
1
l.store "with %s Famfamfam iconset %s", "con %s le icone Famfamfam %s"
-
1
l.store "your blog", "il tuo blog"
-
end
-
# coding: utf-8
-
1
Localization.define("ja_JP") do |l|
-
-
# app/controllers/accounts_controller.rb
-
1
l.store "Login successful", "ログインしました"
-
1
l.store "Login unsuccessful", "ログインに失敗しました"
-
1
l.store "An email has been successfully sent to your address with your new password", ""
-
1
l.store "Oops, something wrong just happened", ""
-
1
l.store "Successfully logged out", "ログアウトしました"
-
1
l.store "login", "ログイン"
-
1
l.store "signup", "サインアップ"
-
1
l.store "Recover your password", ""
-
-
# app/controllers/admin/categories_controller.rb
-
1
l.store "Category was successfully saved.", ""
-
1
l.store "Category could not be saved.", ""
-
-
# app/controllers/admin/content_controller.rb
-
1
l.store "Error, you are not allowed to perform this action", "あなたのアカウントではこの操作は許可されていません"
-
1
l.store "Preview", ""
-
1
l.store "Article was successfully created", "記事を作成しました"
-
1
l.store "Article was successfully updated.", "記事が更新されました"
-
-
# app/controllers/admin/feedback_controller.rb
-
1
l.store "Deleted", ""
-
1
l.store "Not found", ""
-
1
l.store "Deleted %d item(s)", ""
-
1
l.store "Marked %d item(s) as Ham", ""
-
1
l.store "Marked %d item(s) as Spam", ""
-
1
l.store "Confirmed classification of %s item(s)", ""
-
1
l.store "Not implemented", ""
-
1
l.store "All spam have been deleted", ""
-
1
l.store "Comment was successfully created.", ""
-
1
l.store "Comment was successfully updated.", ""
-
-
# app/controllers/admin/pages_controller.rb
-
1
l.store "Page was successfully created.", "ページが作成されました"
-
1
l.store "Page was successfully updated.", "ページが更新されました"
-
-
# app/controllers/admin/profiles_controller.rb
-
1
l.store "User was successfully updated.", "プロフィールが更新されました"
-
-
# app/controllers/admin/resources_controller.rb
-
1
l.store "Error occurred while updating Content Type.", "コンテントタイプを更新中にエラーが発生しました"
-
1
l.store "complete", "完了"
-
1
l.store "File uploaded: ", "アップロードするファイル: "
-
1
l.store "Unable to upload", "アップロードできません"
-
1
l.store "Metadata was successfully updated.", "メタデータは正常に更新されました"
-
1
l.store "Not all metadata was defined correctly.", "いくつかのメタデータが正しく反映されませんでした"
-
1
l.store "Content Type was successfully updated.", "コンテントタイプは正常に更新されました"
-
-
# app/controllers/admin/settings_controller.rb
-
1
l.store "Please review and save the settings before continuing", ""
-
1
l.store "config updated.", "設定は更新されました"
-
-
# app/controllers/admin/sidebar_controller.rb
-
1
l.store "It seems something went wrong. Maybe some of your sidebars are actually missing and you should either reinstall them or remove them manually", ""
-
-
# app/controllers/admin/tags_controller.rb
-
1
l.store "Tag was successfully updated.", ""
-
-
# app/controllers/admin/themes_controller.rb
-
1
l.store "Theme changed successfully", ""
-
1
l.store "You are not authorized to open this file", ""
-
1
l.store "File saved successfully", ""
-
1
l.store "Unable to write file", ""
-
-
# app/controllers/admin/users_controller.rb
-
1
l.store "User was successfully created.", ""
-
-
# app/controllers/application_controller.rb
-
1
l.store "Localization.rtl", ""
-
-
# app/controllers/articles_controller.rb
-
1
l.store "No posts found...", ""
-
1
l.store "Archives for", ""
-
1
l.store "Archives for ", ""
-
1
l.store ", Articles for ", ""
-
-
# app/controllers/grouping_controller.rb
-
1
l.store "page", ""
-
1
l.store "everything about", ""
-
-
# app/helpers/admin/base_helper.rb
-
1
l.store "Cancel", "キャンセル"
-
1
l.store "Store", ""
-
1
l.store "Delete", "削除"
-
1
l.store "delete", "削除"
-
1
l.store "Delete content", ""
-
1
l.store "Are you sure?", ""
-
1
l.store "Please select", "選択してください"
-
1
l.store "There are no %s yet. Why don't you start and create one?", ""
-
1
l.store "or", "または"
-
1
l.store "Save", "保存"
-
1
l.store "Edit", "編集"
-
1
l.store "Show", ""
-
1
l.store "Published", "公開済み"
-
1
l.store "Unpublished", ""
-
1
l.store "Show help on Typo macros", "Typoマクロのヘルプを表示"
-
1
l.store "Back to overview", "オーバービューに戻る"
-
1
l.store "Name", "名前"
-
1
l.store "Description", "説明"
-
1
l.store "Tag", ""
-
-
# app/helpers/admin/categories_helper.rb
-
1
l.store "no articles", ""
-
1
l.store "1 article", "1記事"
-
1
l.store "%d articles", "%d記事"
-
-
# app/helpers/admin/content_helper.rb
-
1
l.store "Destroy this draft", ""
-
-
# app/helpers/admin/feedback_helper.rb
-
1
l.store "Show conversation", ""
-
1
l.store "Flag as %s", ""
-
-
# app/helpers/application_helper.rb
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M:%%S GMT", Proc.new { |date| sprintf(date.strftime("%Y-%m-%d %H:%M:%S GMT")) }
-
1
l.store "%%d. %%b", Proc.new { |date| sprintf(date.strftime("%m/%d")) }
-
1
l.store "%d comments", ""
-
1
l.store "no comments", "コメントなし"
-
1
l.store "1 comment", ""
-
1
l.store "no trackbacks", "トラックバックなし"
-
1
l.store "1 trackback", ""
-
1
l.store "%d trackbacks", ""
-
-
# app/helpers/content_helper.rb
-
1
l.store "Posted in", "カテゴリ"
-
1
l.store "Tags", "タグ"
-
1
l.store "no posts", ""
-
1
l.store "1 post", ""
-
1
l.store "%d posts", ""
-
-
# app/models/article.rb
-
1
l.store "Original article writen by", ""
-
1
l.store "and published on", ""
-
1
l.store "direct link to this article", ""
-
1
l.store "If you are reading this article elsewhere than", ""
-
1
l.store "it has been illegally reproduced and without proper authorization", ""
-
-
# app/models/blog.rb
-
1
l.store "You need a permalink format with an identifier : %%month%%, %%year%%, %%day%%, %%title%%", ""
-
1
l.store "Can't end in .rss or .atom. These are reserved to be used for feed URLs", ""
-
-
# app/models/feedback/states.rb
-
1
l.store "Unclassified", "未分類"
-
1
l.store "Just Presumed Ham", "承認と推定"
-
1
l.store "Ham?", "承認?"
-
1
l.store "Just Marked As Ham", "承認マーク"
-
1
l.store "Ham", "承認"
-
1
l.store "Spam?", "スパム?"
-
1
l.store "Just Marked As Spam", "スパムマーク"
-
1
l.store "Spam", "スパム"
-
-
# app/views/accounts/login.html.erb
-
1
l.store "I've lost my password", ""
-
1
l.store "Login", "ログイン"
-
1
l.store "Password", "パスワード"
-
1
l.store "Remember me", "ログイン状態を持続"
-
1
l.store "Submit", ""
-
1
l.store "Back to ", ""
-
-
# app/views/accounts/recover_password.html.erb
-
1
l.store "Username or email", ""
-
-
# app/views/accounts/signup.html.erb
-
1
l.store "Create an account", ""
-
1
l.store "Username", "ユーザー名"
-
1
l.store "Email", "メールアドレス"
-
1
l.store "Signup", "サインアップ"
-
-
# app/views/admin/categories/_categories.html.erb
-
1
l.store "Title", "タイトル"
-
1
l.store "Reorder", "並べ替え"
-
1
l.store "Sort alphabetically", "アルファベット順に並べ替え"
-
-
# app/views/admin/categories/_form.html.erb
-
1
l.store "Keywords", ""
-
-
# app/views/admin/categories/destroy.html.erb
-
1
l.store "Are you sure you want to delete the category ", "このカテゴリを削除してもよろしいですか? "
-
1
l.store "Delete this category", "このカテゴリを削除"
-
1
l.store "Categories", "カテゴリ"
-
-
# app/views/admin/categories/index.html.erb
-
1
l.store "New Category", ""
-
-
# app/views/admin/categories/new.html.erb
-
1
l.store "%s Category", ""
-
-
# app/views/admin/categories/reorder.html.erb
-
1
l.store "(Done)", "(完了)"
-
-
# app/views/admin/content/_attachment.html.erb
-
1
l.store "Remove", "削除"
-
1
l.store "Currently this article has the following resources", "現在この記事には以下のリソースが含まれています"
-
1
l.store "You can associate the following resources", "以下のリソースを整理することができます"
-
1
l.store "Really delete attachment", "本当に添付ファイルを削除してもよろしいですか?"
-
1
l.store "Add Another Attachment", "添付ファイルを追加"
-
-
# app/views/admin/content/_drafts.html.erb
-
1
l.store "Drafts", ""
-
-
# app/views/admin/content/_form.html.erb
-
1
l.store "Publish settings", ""
-
1
l.store "Allow comments", "コメントを許可"
-
1
l.store "Allow trackbacks", "トラックバックを許可"
-
1
l.store "Password:", ""
-
1
l.store "Publish", "公開"
-
1
l.store "Excerpt", "要約"
-
1
l.store "Excerpts are posts summaries that are shown on your blog homepage only but won’t appear on the post itself", ""
-
1
l.store "Uploads", "アップロード"
-
1
l.store "Post settings", "投稿設定"
-
1
l.store "Publish at", "公開日"
-
1
l.store "Permalink", "パーマリンク"
-
1
l.store "Article filter", "記事フィルター"
-
1
l.store "Save as draft", "下書きとして保存"
-
-
# app/views/admin/content/destroy.html.erb
-
1
l.store "Are you sure you want to delete this article", "本当にこの記事を削除してよろしいですか?"
-
1
l.store "Delete this article", "この記事を削除"
-
1
l.store "Articles", "記事"
-
-
# app/views/admin/content/index.html.erb
-
1
l.store "New Article", ""
-
1
l.store "Search articles that contain ...", "以下の語句を含む記事を検索"
-
1
l.store "Search", "検索"
-
1
l.store "Author", "投稿者"
-
1
l.store "Date", "日付"
-
1
l.store "Feedback", "フィードバック"
-
1
l.store "Filter", "フィルター"
-
1
l.store "Manage articles", "記事の管理"
-
-
# app/views/admin/dashboard/_comments.html.erb
-
1
l.store "Latest Comments", ""
-
1
l.store "No comments yet", "まだコメントはありません"
-
1
l.store "By %s on %s", ""
-
-
# app/views/admin/dashboard/_inbound.html.erb
-
1
l.store "Inbound links", "外部からのリンク"
-
1
l.store "No one made a link to you yet", "まだどこからもリンクされていません"
-
1
l.store " made a link to you saying ", " からこのようにリンクされています "
-
1
l.store "You have no internet connection", "インターネットに接続できません"
-
-
# app/views/admin/dashboard/_overview.html.erb
-
1
l.store "This place gives you a quick overview of what happens on your Typo blog and what you can do. Maybe will you want to %s, %s or %s.", "ここはこのTypoブログの全体が概観できるページです。ここから%sこと、%sこと、そして%sことができます。"
-
1
l.store "update your profile or change your password", "プロフィールを編集したりパスワードを変更する"
-
1
l.store "You can also do a bit of design, %s or %s.", ""
-
1
l.store "change your blog presentation", ""
-
1
l.store "enable plugins", ""
-
1
l.store "write a post", "記事を投稿する"
-
1
l.store "write a page", "ページを作成する"
-
-
# app/views/admin/dashboard/_popular.html.erb
-
1
l.store "Most popular", "人気記事"
-
1
l.store "Nothing to show yet", ""
-
-
# app/views/admin/dashboard/_posts.html.erb
-
1
l.store "Latest Posts", ""
-
1
l.store "No posts yet, why don't you start and write one", ""
-
-
# app/views/admin/dashboard/_typo_dev.html.erb
-
1
l.store "Latest news from the Typo development blog", ""
-
1
l.store "Oh no, nothing new", ""
-
-
# app/views/admin/dashboard/_welcome.html.erb
-
1
l.store "Welcome back, %s!", "お帰りなさいませ、%s 様"
-
1
l.store "%d articles and %d comments were posted since your last connexion", ""
-
1
l.store "You're running Typo %s", "Typo バージョン%s が稼働中です"
-
1
l.store "Total posts : %d", "総投稿数"
-
1
l.store "Your posts : %d", "あなたの投稿数"
-
1
l.store "Total comments : %d", "総コメント数"
-
1
l.store "Spam comments : %d", "スパムコメント数"
-
-
# app/views/admin/feedback/_button.html.erb
-
1
l.store "Select action", ""
-
1
l.store "Delete Checked Items", "チェックした行を削除"
-
1
l.store "Delete all spam", "全てのスパムを削除する"
-
1
l.store "Mark Checked Items as Spam", "チェックした行をスパムにする"
-
1
l.store "Mark Checked Items as Ham", "チェックした行を承認する"
-
1
l.store "All comments", "全てのコメント"
-
1
l.store "Limit to ham", "有効コメント"
-
1
l.store "Unapproved comments", "未承認コメント"
-
1
l.store "Limit to spam", "スパムコメント"
-
-
# app/views/admin/feedback/_form.html.erb
-
1
l.store "Add a comment", ""
-
1
l.store "Url", ""
-
-
# app/views/admin/feedback/_spam.html.erb
-
1
l.store "This comment by <strong>%s</strong> was flagged as spam, %s?", ""
-
-
# app/views/admin/feedback/article.html.erb
-
1
l.store "Comments for %s", ""
-
1
l.store "Status", "ステータス"
-
1
l.store "Comment Author", ""
-
1
l.store "Comment", ""
-
-
# app/views/admin/feedback/edit.html.erb
-
1
l.store "Comments for", "〜へコメント"
-
-
# app/views/admin/feedback/index.html.erb
-
1
l.store "Search Comments and Trackbacks that contain", "以下の語句を含むコメントおよびトラックバックを検索"
-
1
l.store "Article", "記事"
-
-
# app/views/admin/pages/_form.html.erb
-
1
l.store "Online", "オンライン"
-
1
l.store "Page settings", "ページ設定"
-
1
l.store "Permanent link", ""
-
-
# app/views/admin/pages/destroy.html.erb
-
1
l.store "Pages","ページ"
-
1
l.store "Are you sure you want to delete the page", "本当にこのページを削除してよろしいですか?"
-
1
l.store "Delete this page", "このページを削除"
-
-
# app/views/admin/pages/index.html.erb
-
1
l.store "New Page", ""
-
1
l.store "Manage pages", "ページの管理"
-
-
# app/views/admin/profiles/index.html.erb
-
1
l.store "Your profile", "あなたのプロフィール"
-
-
# app/views/admin/resources/_mime_edit.html.erb
-
1
l.store "Content Type", "コンテンツタイプ"
-
-
# app/views/admin/resources/_pages.html.erb
-
1
l.store "Previous page", "前のページ"
-
1
l.store "Next page", "次のページ"
-
-
# app/views/admin/resources/_upload.html.erb
-
1
l.store "Upload a File to your Site", "サイトにファイルをアップロード"
-
1
l.store "File", "ファイル"
-
1
l.store "Upload", "アップロード"
-
-
# app/views/admin/resources/destroy.html.erb
-
1
l.store "Are you sure you want to delete this file", "本当にこのファイルを削除してよろしいですか?"
-
1
l.store "Delete this file from the webserver?", "webサーバーからこのファイルを削除しますか?"
-
1
l.store "File Uploads", "ファイルアップロード"
-
-
# app/views/admin/resources/images.html.erb
-
1
l.store "Thumbnail", ""
-
1
l.store "File Size", "ファイルサイズ"
-
1
l.store "Images", ""
-
1
l.store "right-click for link", "右クリックでリンク"
-
-
# app/views/admin/resources/index.html.erb
-
1
l.store "Filename", "ファイル名"
-
-
# app/views/admin/settings/_submit.html.erb
-
1
l.store "Update settings", ""
-
-
# app/views/admin/settings/feedback.html.erb
-
1
l.store "Enable comments by default", "デフォルトでコメントを有効にする"
-
1
l.store "Enable Trackbacks by default", "デフォルトでトラックバックを許可する"
-
1
l.store "Enable feedback moderation", "フィードバック承認機能を有効にする"
-
1
l.store "You can enable site wide feeback moderation. If you do so, no comment or trackback will appear on your blog unless you validate it", "サイト全体のフィードバック承認機能を有効にすることができます。有効にするとコメントやトラックバックは承認されるまで表示されません。"
-
1
l.store "Comments filter", "コメントフィルター"
-
1
l.store "Enable gravatars", "Gravatarを有効にする"
-
1
l.store "Show your email address", "メールアドレスを表示"
-
1
l.store "Notifications", ""
-
1
l.store "Typo can notify you when new articles or comments are posted", "新しい記事やコメントが投稿された場合に通知を送ることができます"
-
1
l.store "Source Email", "メールアドレス"
-
1
l.store "Email address used by Typo to send notifications", "通知の送信先メールアドレス"
-
1
l.store "Enabling spam protection will make typo compare the IP address of posters as well as the contents of their posts against local and remote blacklists. Good defense against spam bots", "スパムプロテクションを有効にすると、投稿者のIPアドレスおよびその投稿内容をローカル、リモート両方のブラックリストと比較します"
-
1
l.store "Enable spam protection", "スパムプロテクションを有効にする"
-
1
l.store "Akismet Key", "Akismetキー"
-
1
l.store "Typo can (optionally) use the %s spam-filtering service. You need to register with Akismet and receive an API key before you can use their service. If you have an Akismet key, enter it here", "Typoはオプションで%sスパムフィルタリングサービスを利用できます。これらのサービスを使用するにはAkismetに登録し、APIキーを取得する必要があります。すでにAkismetキーをお持ちであればここに入力してください"
-
1
l.store "Disable trackbacks site-wide", ""
-
1
l.store "This setting allows you to disable trackbacks for every article in your blog. It won't remove existing trackbacks, but it will prevent any further attempt to add a trackback anywhere on your blog.", "この設定はすでにあるトラックバックを削除しませんが、新しく追加しようとするトラックバックを防ぐことができます。"
-
1
l.store "Disable comments after", "右の期間以後のコメントを不許可にする"
-
1
l.store "days", "日"
-
1
l.store "Set to 0 to never disable comments", "コメントを不許可にしない場合は0を設定してください"
-
1
l.store "Max Links", "最大のリンク数"
-
1
l.store "Typo will automatically reject comments and trackbacks which contain over a certain amount of links in them", "Typoは指定された数のリンクが含まれているコメントやトラックバックを自動的に拒否します"
-
1
l.store "Set to 0 to never reject comments", "コメントを拒否しない場合は0を設定してください"
-
1
l.store "Feedback settings", ""
-
-
# app/views/admin/settings/index.html.erb
-
1
l.store "Your blog", "あなたのブログ"
-
1
l.store "Blog name", "ブログ名"
-
1
l.store "Blog subtitle", "ブログサブタイトル"
-
1
l.store "Blog URL", "ブログURL"
-
1
l.store "Language", "言語"
-
1
l.store "Allow users to register", "ユーザーに登録させる"
-
1
l.store "You can allow users to register to your blog. By default, they will register as contributors, an unpriviledged account level which grant them no rights but own a profile on the site. If you don't want users to register, you can thus add them by yourself in the users part of this admin.", "ユーザーがこのブログに登録するのを許可できます。デフォルトでユーザーは自分自身のプロフィールを編集する以外の権限を持たないcontributorとして登録されます。ユーザーに登録させたくない場合は、管理者であるあなた自らがユーザーを追加することができます。"
-
1
l.store "Items to display in admin lists", "管理リストに表示する行数"
-
1
l.store "Publishing options", ""
-
1
l.store "Display", "表示"
-
1
l.store "articles on my homepage by default", "ホームページのデフォルト記事数"
-
1
l.store "articles in my news feed by default", "RSSフィードのデフォルト記事数"
-
1
l.store "Show full article on feed", "記事の全文をフィードに表示"
-
1
l.store "Feedburner ID", ""
-
1
l.store "General settings", "一般設定"
-
1
l.store "You can use your Google Feedburner account instead of Typo feed URL. To enable this, fill this form with your Feedburner ID.", ""
-
-
# app/views/admin/settings/seo.html.erb
-
1
l.store "Search Engine Optimisation", ""
-
1
l.store "Format of permalink", "パーマリンクの書式"
-
1
l.store "Google Analytics", ""
-
1
l.store "Google verification link", ""
-
1
l.store "Meta description", "METAタグDescription"
-
1
l.store "Meta keywords", "METAタグKeywords"
-
1
l.store "Use RSS description", "RSSにDescription表示をする"
-
1
l.store "Index categories", "カテゴリのインデックス"
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every category page, removing them from search engines and preventing duplicate content issues", "このボックスのチェックを外すと、全てのカテゴリのページに<code>noindex, follow</code>のMETAタグを付与します。すると検索エンジンからそれらのページが削除され、コンテンツ重複の防止になります"
-
1
l.store "Index tags", "タグのインデックス"
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every tags page, removing them from search engines and preventing duplicate content issues", "このボックスのチェックを外すと、全てのタグのページに<code>noindex, follow</code>のMETAタグを付与します。すると検索エンジンからそれらのページが削除され、コンテンツ重複の防止になります"
-
1
l.store "Robots.txt", ""
-
1
l.store "You robots.txt file is not writeable. Typo won't be able to write it", ""
-
1
l.store "Search Engine Optimization", "検索エンジン最適化"
-
1
l.store "This will display", ""
-
1
l.store "at the bottom of each of your post in the RSS feed", ""
-
-
# app/views/admin/settings/update_database.html.erb
-
1
l.store "Information", "インフォメーション"
-
1
l.store "Current database version", "現在のデータベースのバージョン"
-
1
l.store "New database version", "新しいデータベースのバージョン"
-
1
l.store "Your database supports migrations", "あなたのデータベースはマイグレーションをサポートしています"
-
1
l.store "Needed migrations", "マイグレーションが必要です"
-
1
l.store "You are up to date!", "最新です!"
-
1
l.store "Update database now", "データベースを今すぐ更新"
-
1
l.store "may take a moment", "少しお待ちください"
-
1
l.store "Database migration", "データベースマイグレーション"
-
1
l.store "yes", "はい"
-
1
l.store "no", "いいえ"
-
-
# app/views/admin/settings/write.html.erb
-
1
l.store "Send trackbacks", "トラックバックを送信"
-
1
l.store "When publishing articles, Typo can send trackbacks to websites that you link to. This should be disabled for private blogs as it will leak non-public information to sites that you're discussing. For public blogs, there's no real point in disabling this.", "記事が公開されると、Typoはリンクしたページへトラックバックを送信します。非公開ブログの場合は公開されたブログへ情報が漏れないようにこのチェックボックスを非選択にしてください。公開ブログの場合は非選択にする必要はありません。"
-
1
l.store "URLs to ping automatically", "自動的にPingを送信するURL"
-
1
l.store "Latitude, Longitude", "緯度、経度"
-
1
l.store "your lattitude and longitude", "あなたの緯度、経度"
-
1
l.store "exemple", "例"
-
1
l.store "Write", "新規作成"
-
-
# app/views/admin/sidebar/_availables.html.erb
-
1
l.store "You have no plugins installed", "プラグインがインストールされていません"
-
-
# app/views/admin/sidebar/_publish.html.erb
-
1
l.store "Changes published", "変更して公開"
-
-
# app/views/admin/sidebar/_target.html.erb
-
1
l.store "Drag some plugins here to fill your sidebar", "サイドバーで利用するプラグインをドラッグしてください"
-
-
# app/views/admin/sidebar/index.html.erb
-
1
l.store "Drag and drop to change the sidebar items displayed on this blog. To remove items from the sidebar just click remove Changes are saved immediately, but not activated until you click the 'Publish' button", "ブログに表示するサイドバー項目をドラッグ&ドロップで変更してください。サイドバーから項目を削除した場合はすぐに変更が保存されますが、「公開」ボタンを押すまでは有効になりません。"
-
1
l.store "Available Items", "利用可能な項目"
-
1
l.store "Active Sidebar items", "有効なサイドバー項目"
-
1
l.store "Get more plugins", "他のプラグインの入手"
-
1
l.store "Sidebar", "サイドバー"
-
1
l.store "Publish changes", "変更を公開"
-
-
# app/views/admin/tags/_form.html.erb
-
1
l.store "Display name", "表示名"
-
-
# app/views/admin/tags/destroy.html.erb
-
1
l.store "Are you sure you want to delete the tag", ""
-
1
l.store "Delete this tag", ""
-
-
# app/views/admin/tags/edit.html.erb
-
1
l.store "Editing ", ""
-
1
l.store "Back to tags list", ""
-
-
# app/views/admin/tags/index.html.erb
-
1
l.store "Display Name", "表示名"
-
1
l.store "Manage tags", "タグの管理"
-
-
# app/views/admin/themes/catalogue.html.erb
-
1
l.store "Sorry the theme catalogue is not available", ""
-
1
l.store "Theme catalogue", "テーマカタログ"
-
-
# app/views/admin/themes/editor.html.erb
-
1
l.store "Theme editor", "テーマエディタ"
-
-
# app/views/admin/themes/index.html.erb
-
1
l.store "Active theme", "現在のテーマ"
-
1
l.store "Get more themes", "他のテーマの入手"
-
1
l.store "You can download third party themes from officially supported %s ", "公式サイト%sからサードパーティのテーマをダウンロードできます。"
-
1
l.store "Typogarden", ""
-
1
l.store "To install a theme you just need to upload the theme folder into your themes directory. Once a theme is uploaded, you should see it on this page.", "テーマをインストールするには、アプリケーションのthemes/ディレクトリに任意のテーマのフォルダをアップロードしてください。そうすればそのテーマをこのページで閲覧することができます。"
-
1
l.store "Choose a theme", "テーマの選択"
-
-
# app/views/admin/users/_form.html.erb
-
1
l.store "Account settings", ""
-
1
l.store "Password confirmation", "パスワード(確認用)"
-
1
l.store "Profile", "プロフィール"
-
1
l.store "User's status", ""
-
1
l.store "Active", "有効"
-
1
l.store "Inactive", "無効"
-
1
l.store "Profile Settings", ""
-
1
l.store "Firstname", "姓"
-
1
l.store "Lastname", "名"
-
1
l.store "Nickname", "ニックネーム"
-
1
l.store "Editor", "エディタ"
-
1
l.store "Use simple editor", "プレーンなエディタを使う"
-
1
l.store "Use visual rich editor", "WYSIWYGエディタを使う"
-
1
l.store "Send notification messages via email", "メールで通知を送信"
-
1
l.store "Send notification messages when new articles are posted", "新しい記事が投稿された際に通知メッセージを送る"
-
1
l.store "Send notification messages when comments are posted", "コメントが投稿された際に通知メッセージを送る"
-
1
l.store "Contact Options", ""
-
1
l.store "Your site", "あなたのホームページ"
-
1
l.store "display url on public profile", "公開プロフィールにURLを表示"
-
1
l.store "Your MSN", "あなたのMSN ID"
-
1
l.store "display MSN ID on public profile", "公開プロフィールにMSN IDを表示"
-
1
l.store "Your Yahoo ID", "あなたのYahoo ID"
-
1
l.store "display Yahoo! ID on public profile", "公開プロフィールにYahoo! IDを表示"
-
1
l.store "Your Jabber ID", "あなたのJabber ID"
-
1
l.store "display Jabber ID on public profile", "公開プロフィールにJabber IDを表示"
-
1
l.store "Your AIM id", "あなたのAIM ID"
-
1
l.store "display AIM ID on public profile", "公開プロフィールにAIM IDを表示"
-
1
l.store "Your Twitter username", "あなたのTwitter ID"
-
1
l.store "display twitter on public profile", "公開プロフィールにTwitter IDを表示"
-
1
l.store "Tell us more about you", "補足事項"
-
-
# app/views/admin/users/destroy.html.erb
-
1
l.store "Really delete user", "本当にユーザーを削除"
-
1
l.store "Yes", "はい"
-
1
l.store "Users", "ユーザー"
-
-
# app/views/admin/users/edit.html.erb
-
1
l.store "Edit User", "ユーザー編集"
-
-
# app/views/admin/users/index.html.erb
-
1
l.store "New User", "新規ユーザー"
-
1
l.store "Comments", "コメント"
-
1
l.store "State", "状態"
-
1
l.store "%s user", "%s"
-
-
# app/views/admin/users/new.html.erb
-
1
l.store "Add User", "ユーザーの追加"
-
-
# app/views/articles/_article.html.erb
-
1
l.store "Posted by", "投稿者"
-
1
l.store "Continue reading", ""
-
-
# app/views/articles/_comment.html.erb
-
1
l.store "said", "発言"
-
1
l.store "This comment has been flagged for moderator approval. It won't appear on this blog until the author approves it", "このコメントはモデレーターの確認が必要です。モデレーターが確認後にコメントが表示されます。"
-
-
# app/views/articles/_comment_box.html.erb
-
1
l.store "Your name", "あなたの名前"
-
1
l.store "Your email", "あなたのemail"
-
1
l.store "Your message", "メッセージ"
-
1
l.store "Comment Markup Help", "コメントのマークアップヘルプ"
-
1
l.store "Preview comment", "前のコメント"
-
1
l.store "leave url/email", ""
-
-
# app/views/articles/_comment_failed.html.erb
-
1
l.store "Oops, something wrong happened, the comment could not be saved", ""
-
-
# app/views/articles/_trackback.html.erb
-
1
l.store "From", "From"
-
-
# app/views/articles/archives.html.erb
-
1
l.store "No articles found", "記事が見つかりませんでした"
-
1
l.store "posted in", ""
-
-
# app/views/articles/comment_preview.html.erb
-
1
l.store "is about to say", "〜について言う"
-
-
# app/views/articles/groupings.html.erb
-
1
l.store "There are", "ここに"
-
-
# app/views/articles/read.html.erb
-
1
l.store "Leave a response", "コメントを書く"
-
1
l.store "Trackbacks", "トラックバック"
-
1
l.store "Use the following link to trackback from your own site", "トラックバックリンク"
-
1
l.store "RSS feed for this post", "この記事のRSSフィード"
-
1
l.store "trackback uri", "トラックバックURL"
-
1
l.store "Comments are disabled", "コメントは許可されていません"
-
-
# app/views/authors/show.html.erb
-
1
l.store "Web site:", ""
-
1
l.store "MSN:", ""
-
1
l.store "Yahoo:", ""
-
1
l.store "Jabber:", ""
-
1
l.store "AIM:", ""
-
1
l.store "Twitter:", ""
-
1
l.store "About %s", ""
-
1
l.store "This author has not published any article yet", ""
-
-
# app/views/comments/show.html.erb
-
1
l.store "This comment has been flagged for moderator approval.", ""
-
-
# app/views/layouts/administration.html.erb
-
1
l.store "%s »", ""
-
1
l.store "is proudly powered by", ""
-
1
l.store "Dashboard", "ダッシュボード"
-
-
# app/views/setup/index.html.erb
-
1
l.store "Welcome", ""
-
1
l.store "Welcome to your %s blog setup. Just fill in your blog title and your email, and Typo will take care of everything else", ""
-
-
# app/views/shared/_confirm.html.erb
-
1
l.store "Congratulation!", ""
-
1
l.store "You have successfully signed up", ""
-
1
l.store "<strong>Login:</strong> %s", ""
-
1
l.store "<strong>Password:</strong> %s", ""
-
1
l.store "Don't lose the mail sent at %s or you won't be able to login anymore", ""
-
1
l.store "Proceed to %s", ""
-
1
l.store "admin", ""
-
-
# app/views/shared/_search.html.erb
-
1
l.store "Live Search", ""
-
-
# test/mocks/themes/typographic/layouts/default.html.erb
-
1
l.store "Powered by %s", ""
-
1
l.store "Designed by %s ", ""
-
-
# test/mocks/themes/typographic/views/articles/_article.html.erb
-
1
l.store "Continue reading...", "続きを読む‥"
-
1
l.store "This entry was posted on %s", ""
-
1
l.store "and %s", ""
-
1
l.store "You can follow any response to this entry through the %s", ""
-
1
l.store "Atom feed", ""
-
1
l.store "You can leave a %s", ""
-
1
l.store "or a %s from your own site", ""
-
1
l.store "Read full article", ""
-
1
l.store "comment", ""
-
1
l.store "trackback", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment.html.erb
-
1
l.store "later", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment_form.html.erb
-
1
l.store "Leave a comment", ""
-
1
l.store "Name %s", ""
-
1
l.store "enabled", ""
-
1
l.store "never displayed", ""
-
1
l.store "Website", ""
-
1
l.store "Textile enabled", ""
-
1
l.store "Markdown enabled", ""
-
1
l.store "required", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment_list.html.erb
-
1
l.store "No comments", ""
-
-
# test/mocks/themes/typographic/views/shared/_search.html.erb
-
1
l.store "Searching", ""
-
-
# themes/dirtylicious/layouts/default.html.erb
-
1
l.store "Home", ""
-
1
l.store "About", ""
-
1
l.store "Designed by %s ported to typo by %s ", ""
-
-
# themes/scribbish/layouts/default.html.erb
-
1
l.store "styled with %s", ""
-
-
# themes/scribbish/views/articles/_article.html.erb
-
1
l.store "Meta", ""
-
1
l.store "permalink", ""
-
-
# themes/true-blue-3/helpers/theme_helper.rb
-
1
l.store "You are here: ", ""
-
1
l.store "%d comment", ""
-
-
# themes/true-blue-3/views/articles/_article.html.erb
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M", ""
-
-
# themes/true-blue-3/views/articles/_comment.html.erb
-
1
l.store "By", ""
-
1
l.store "later:", ""
-
-
# themes/true-blue-3/views/articles/_comment_form.html.erb
-
1
l.store "Email address", ""
-
1
l.store "Your website", ""
-
-
# themes/true-blue-3/views/articles/read.html.erb
-
1
l.store "If you liked this article you can %s", ""
-
1
l.store "add me to Twitter", ""
-
1
l.store "Trackbacks for", "〜へのトラックバック"
-
-
# themes/true-blue-3/views/articles/search.html.erb
-
1
l.store "Search results for:", ""
-
-
# themes/true-blue-3/views/categories/index.html.erb
-
1
l.store "Read all articles in %s", ""
-
-
# themes/true-blue-3/views/categories/show.html.erb
-
1
l.store "Previous", ""
-
1
l.store "Next", ""
-
-
# vendor/plugins/archives_sidebar/views/content.rhtml
-
1
l.store "Archives", "アーカイブ"
-
-
# vendor/plugins/authors_sidebar/views/content.rhtml
-
1
l.store "Authors", "作者"
-
-
# vendor/plugins/xml_sidebar/views/content.rhtml
-
1
l.store "Syndicate", "シンジゲート"
-
1
l.store "Category %s", ""
-
1
l.store "Tag %s", ""
-
-
# Obsolete translations
-
1
l.store "A new message was posted to ", "〜へ新しいメッセージを投稿しました"
-
1
l.store "Action", "アクション"
-
1
l.store "Activate", "有効にする"
-
1
l.store "Add MetaData", "メタデータ追加"
-
1
l.store "Add category", "カテゴリ追加"
-
1
l.store "Add new user", "新しいユーザーを追加"
-
1
l.store "Add pattern", "パターン追加"
-
1
l.store "Allow non-ajax comments", "Ajaxでないコメントを許可する"
-
1
l.store "Apr", "4月"
-
1
l.store "April", "4月"
-
1
l.store "Are you sure you want to delete this filter", "このフィルターを削除してもよろしいですか?"
-
1
l.store "Are you sure you want to delete this item?", "この項目を削除してもよろしいですか?"
-
1
l.store "Articles in", "記事"
-
1
l.store "Attachments", "添付"
-
1
l.store "Aug", "8月"
-
1
l.store "August", "8月"
-
1
l.store "Blacklist", "ブラックリスト"
-
1
l.store "Blacklist Patterns", "ブラックリストパターン"
-
1
l.store "Blog settings", "ブログ設定"
-
1
l.store "Cache", "キャッシュ"
-
1
l.store "Cache was cleared", "キャッシュはクリアされました"
-
1
l.store "Category", "カテゴリ"
-
1
l.store "Category could not be created.", "カテゴリは追加できませんでした"
-
1
l.store "Category was successfully created.", "カテゴリは正常に作成されました"
-
1
l.store "Category was successfully updated.", "カテゴリは正常に更新されました。"
-
1
l.store "Change you blog presentation", "プログの説明を変更してください。"
-
1
l.store "Choose password", "パスワード"
-
1
l.store "Comment Excerpt", "コメント抜粋"
-
1
l.store "Confirm Classification of Checked Items", "チェックした行の分類を認める"
-
1
l.store "Confirm password", "パスワード再入力"
-
1
l.store "Contact options", "連絡オプション"
-
1
l.store "Content", "コンテンツ"
-
1
l.store "Copyright Information", "著作権情報"
-
1
l.store "Create new Blacklist", "新しいブラックリスト作成"
-
1
l.store "Create new category", "新規カテゴリ追加"
-
1
l.store "Create new page", "新しいページを作成"
-
1
l.store "Create new text filter", "新しいテキストフィルターを作成"
-
1
l.store "Creating comment", "コメント作成"
-
1
l.store "Creating text filter", "テキストフィルター作成"
-
1
l.store "Creating trackback", "トラックバックを作成"
-
1
l.store "Creating user", "ユーザー作成"
-
1
l.store "Currently this article is listed in following categories", "現在この記事は以下のカテゴリに追加されています"
-
1
l.store "Customize Sidebar", "サイドバーのカスタマイズ"
-
1
l.store "Dec", "12月"
-
1
l.store "December", "12月"
-
1
l.store "Delete this filter", "このフィルターを削除"
-
1
l.store "Desired login", "ログイン名"
-
1
l.store "Do you want to go to your blog?", "ブログに移動しますか?"
-
1
l.store "Drafts:", "下書き:"
-
1
l.store "Duration", "継続時間"
-
1
l.store "Edit Article", "記事を編集"
-
1
l.store "Edit MetaData", "メタデータ編集"
-
1
l.store "Edit this article", "この記事を編集"
-
1
l.store "Edit this category", "このカテゴリを編集"
-
1
l.store "Edit this filter", "このフィルターを編集"
-
1
l.store "Edit this page", "このページを編集"
-
1
l.store "Edit this trackback", "このトラックバックを編集"
-
1
l.store "Editing User", "ユーザー編集中"
-
1
l.store "Editing category", "カテゴリ編集中"
-
1
l.store "Editing comment", "コメント編集中"
-
1
l.store "Editing page", "ページを編集中"
-
1
l.store "Editing pattern", "パターン編集中"
-
1
l.store "Editing textfilter", "テキストフィルターを編集中"
-
1
l.store "Editing trackback", "トラックバックを編集"
-
1
l.store "Enable plugins", "プラグイン有効化"
-
1
l.store "Explicit", "明示的コンテンツ"
-
1
l.store "Feb", "2月"
-
1
l.store "February", "2月"
-
1
l.store "Feedback for", "フィードバック: "
-
1
l.store "Filters", "フィルター"
-
1
l.store "Fri", "金"
-
1
l.store "Friday", "金曜日"
-
1
l.store "HTML was cleared", "HTMLはクリアされました"
-
1
l.store "IP", "IPアドレス"
-
1
l.store "Jan", "1月"
-
1
l.store "January", "1月"
-
1
l.store "Jul", "7月"
-
1
l.store "July", "7月"
-
1
l.store "Jun", "6月"
-
1
l.store "June", "6月"
-
1
l.store "Key Words", "キーワード"
-
1
l.store "Last Comments", "最新のコメント"
-
1
l.store "Last posts", "最新の記事"
-
1
l.store "Last updated", "最終更新日"
-
1
l.store "Logoff", "ログアウト"
-
1
l.store "Macro Filter Help", "マクロフィルターヘルプ"
-
1
l.store "Macros", "マクロ"
-
1
l.store "Manage Articles", "記事管理"
-
1
l.store "Manage Categories", "カテゴリ管理"
-
1
l.store "Manage Pages", "ページ管理"
-
1
l.store "Manage Resources", "リソース管理"
-
1
l.store "Manage Text Filters", "テキストフィルターの管理"
-
1
l.store "Mandatory", "必須"
-
1
l.store "Mar", "3月"
-
1
l.store "March", "3月"
-
1
l.store "Markup", "マークアップ"
-
1
l.store "Markup type", "マークアップタイプ"
-
1
l.store "May", "5月"
-
1
l.store "MetaData", "メタデータ"
-
1
l.store "Metadata was successfully removed.", "メタデータは正常に削除されました"
-
1
l.store "Mon", "月"
-
1
l.store "Monday", "月曜日"
-
1
l.store "New post", "新規記事"
-
1
l.store "No", "いいえ"
-
1
l.store "Not published by Apple", "Appleに公開しない"
-
1
l.store "Notification", "通知"
-
1
l.store "Notified", "通知"
-
1
l.store "Notify on new articles", "新しい記事を通知"
-
1
l.store "Notify on new comments", "新しいコメントを通知"
-
1
l.store "Notify via email", "email経由で通知"
-
1
l.store "Nov", "11月"
-
1
l.store "November", "11月"
-
1
l.store "Number of Articles", "記事数"
-
1
l.store "Number of Comments", "コメント数"
-
1
l.store "Oct", "10月"
-
1
l.store "October", "10月"
-
1
l.store "Older posts", "古い記事"
-
1
l.store "Optional Name", "オプション名"
-
1
l.store "Options", "オプション"
-
1
l.store "Page", "ページ"
-
1
l.store "Parameters", "パラメーター"
-
1
l.store "Pattern", "パターン"
-
1
l.store "Personal information", "個人情報"
-
1
l.store "Pictures from", "〜からの画像"
-
1
l.store "Podcasts", "ポッドキャスト"
-
1
l.store "Post-processing filters", "投稿処理フィルター"
-
1
l.store "Posted date", "投稿日"
-
1
l.store "Posts", "投稿数"
-
1
l.store "Preview Article", "前の記事"
-
1
l.store "Read", "表示"
-
1
l.store "Read more", "続きを読む"
-
1
l.store "Recent comments", "最近のコメント"
-
1
l.store "Recent trackbacks", "最近のトラックバック"
-
1
l.store "Regex", "正規表現"
-
1
l.store "Remove iTunes Metadata", "iTunesのメタデータを削除"
-
1
l.store "Resource MetaData", "リソースメタデータ"
-
1
l.store "Sat", "土"
-
1
l.store "Saturday", "土曜日"
-
1
l.store "See help text for this filter", "このフィルターのヘルプを見る"
-
1
l.store "Sep", "9月"
-
1
l.store "September", "9月"
-
1
l.store "Set iTunes metadata for this enclosure", "このリソースにiTunesのメタデータをセット"
-
1
l.store "Setting for channel", "チャンネル設定"
-
1
l.store "Show Help", "ヘルプを表示"
-
1
l.store "Show this article", "この記事を表示"
-
1
l.store "Show this category", "カテゴリ表示"
-
1
l.store "Show this comment", "このコメントを表示"
-
1
l.store "Show this page", "このページを表示"
-
1
l.store "Show this pattern", "パターンを表示"
-
1
l.store "Show this user", "このユーザーを表示"
-
1
l.store "Statistics", "統計データ"
-
1
l.store "String", "文字列"
-
1
l.store "Subtitle", "サブタイトル"
-
1
l.store "Summary", "サマリー"
-
1
l.store "Sun", "日"
-
1
l.store "Sunday", "日曜日"
-
1
l.store "Sweep cache", "キャッシュをクリア"
-
1
l.store "System information", "システム情報"
-
1
l.store "Text Filter Details", "テキストフィルター詳細"
-
1
l.store "Text Filters", "テキストフィルター"
-
1
l.store "The below settings act as defaults when you choose to publish an enclosure with iTunes metadata", "以下の項目は、公開を選択した場合にデフォルトのiTunesのメタデータとして設定されます"
-
1
l.store "Themes", "テーマ"
-
1
l.store "There are %d entries in the page cache", "ページキャッシュに%d個の記事があります"
-
1
l.store "Thu", "木"
-
1
l.store "Thursday", "木曜日"
-
1
l.store "Tue", "火"
-
1
l.store "Tuesday", "火曜日"
-
1
l.store "Type", "タイプ"
-
1
l.store "Typo documentation", "Typoドキュメント"
-
1
l.store "Update your profile or change your password", "プロファイルを更新するか、パスワードを変更してください"
-
1
l.store "Upload a new File", "新規ファイルをアップロード"
-
1
l.store "Upload a new Resource", "新しいリソースをアップロード"
-
1
l.store "Uploaded", "アップロード"
-
1
l.store "User's articles", "ユーザーの記事"
-
1
l.store "View article on your blog", "ブログで記事を確認"
-
1
l.store "View comment on your blog", "ブログにコメントを表示"
-
1
l.store "View page on your blog", "ブログでページを確認"
-
1
l.store "Wed", "水"
-
1
l.store "Wednesday", "水曜日"
-
1
l.store "What can you do ?", "なにができますか?"
-
1
l.store "Write Page", "ページを作成"
-
1
l.store "Write Post", "記事を書く"
-
1
l.store "Write a Page", "ページを書く"
-
1
l.store "Write an Article", "記事を書く"
-
1
l.store "You are now logged out of the system", "システムからログアウトしました"
-
1
l.store "You can add it to the following categories", "以下のカテゴリへ追加することができます"
-
1
l.store "You can optionally disable non-Ajax comments. Typo will always use Ajax for comment submission if Javascript is enabled, so non-Ajax comments are either from spammers or users without Javascript.", "オプションでAjaxでないコメントを不許可にすることができます。Javascriptが有効な場合、Typoは常にコメントの受け渡しにAjaxを使います。つまりAjaxでないコメントはJavascriptを有効にしていないユーザーのものか、スパマーのものかのどちらかでしょう。"
-
1
l.store "add new", "新規追加"
-
1
l.store "by", "by"
-
1
l.store "log out", "ログアウト"
-
1
l.store "no ", "no "
-
1
l.store "on", "の"
-
1
l.store "published", "公開済み"
-
1
l.store "save", "保存"
-
1
l.store "seperate with spaces", "スペースで分ける"
-
1
l.store "unpublished", "未公開"
-
1
l.store "via email", "email経由"
-
1
l.store "your blog", "ブログ"
-
end
-
# coding: utf-8
-
1
Localization.define("lt_LT") do |l|
-
-
# app/controllers/accounts_controller.rb
-
1
l.store "Login successful", ""
-
1
l.store "Login unsuccessful", ""
-
1
l.store "An email has been successfully sent to your address with your new password", ""
-
1
l.store "Oops, something wrong just happened", ""
-
1
l.store "Successfully logged out", ""
-
1
l.store "login", ""
-
1
l.store "signup", ""
-
1
l.store "Recover your password", ""
-
-
# app/controllers/admin/categories_controller.rb
-
1
l.store "Category was successfully saved.", ""
-
1
l.store "Category could not be saved.", ""
-
-
# app/controllers/admin/content_controller.rb
-
1
l.store "Error, you are not allowed to perform this action", ""
-
1
l.store "Preview", ""
-
1
l.store "Article was successfully created", ""
-
1
l.store "Article was successfully updated.", ""
-
-
# app/controllers/admin/feedback_controller.rb
-
1
l.store "Deleted", ""
-
1
l.store "Not found", ""
-
1
l.store "Deleted %d item(s)", ""
-
1
l.store "Marked %d item(s) as Ham", ""
-
1
l.store "Marked %d item(s) as Spam", ""
-
1
l.store "Confirmed classification of %s item(s)", ""
-
1
l.store "Not implemented", ""
-
1
l.store "All spam have been deleted", ""
-
1
l.store "Comment was successfully created.", ""
-
1
l.store "Comment was successfully updated.", ""
-
-
# app/controllers/admin/pages_controller.rb
-
1
l.store "Page was successfully created.", ""
-
1
l.store "Page was successfully updated.", ""
-
-
# app/controllers/admin/profiles_controller.rb
-
1
l.store "User was successfully updated.", ""
-
-
# app/controllers/admin/resources_controller.rb
-
1
l.store "Error occurred while updating Content Type.", ""
-
1
l.store "complete", ""
-
1
l.store "File uploaded: ", ""
-
1
l.store "Unable to upload", ""
-
1
l.store "Metadata was successfully updated.", ""
-
1
l.store "Not all metadata was defined correctly.", ""
-
1
l.store "Content Type was successfully updated.", ""
-
-
# app/controllers/admin/settings_controller.rb
-
1
l.store "Please review and save the settings before continuing", ""
-
1
l.store "config updated.", ""
-
-
# app/controllers/admin/sidebar_controller.rb
-
1
l.store "It seems something went wrong. Maybe some of your sidebars are actually missing and you should either reinstall them or remove them manually", ""
-
-
# app/controllers/admin/tags_controller.rb
-
1
l.store "Tag was successfully updated.", ""
-
-
# app/controllers/admin/themes_controller.rb
-
1
l.store "Theme changed successfully", ""
-
1
l.store "You are not authorized to open this file", ""
-
1
l.store "File saved successfully", ""
-
1
l.store "Unable to write file", ""
-
-
# app/controllers/admin/users_controller.rb
-
1
l.store "User was successfully created.", ""
-
-
# app/controllers/application_controller.rb
-
1
l.store "Localization.rtl", ""
-
-
# app/controllers/articles_controller.rb
-
1
l.store "No posts found...", ""
-
1
l.store "Archives for", ""
-
1
l.store "Archives for ", ""
-
1
l.store ", Articles for ", ""
-
-
# app/controllers/grouping_controller.rb
-
1
l.store "page", ""
-
1
l.store "everything about", ""
-
-
# app/helpers/admin/base_helper.rb
-
1
l.store "Cancel", "Baigti" # tik ne i kelnes :)
-
1
l.store "Store", ""
-
1
l.store "Delete", "Trinti"
-
1
l.store "delete", ""
-
1
l.store "Delete content", ""
-
1
l.store "Are you sure?", ""
-
1
l.store "Please select", ""
-
1
l.store "There are no %s yet. Why don't you start and create one?", ""
-
1
l.store "or", "arba"
-
1
l.store "Save", "Saugoti"
-
1
l.store "Edit", "Redaguoti"
-
1
l.store "Show", ""
-
1
l.store "Published", "Publikuotas"
-
1
l.store "Unpublished", ""
-
1
l.store "Show help on Typo macros", ""
-
1
l.store "Back to overview", "Atgal į peržiūrą"
-
1
l.store "Name", "Vardas"
-
1
l.store "Description", "Beschreibung"
-
1
l.store "Tag", ""
-
-
# app/helpers/admin/categories_helper.rb
-
1
l.store "no articles", ""
-
1
l.store "1 article", ""
-
1
l.store "%d articles", ""
-
-
# app/helpers/admin/content_helper.rb
-
1
l.store "Destroy this draft", ""
-
-
# app/helpers/admin/feedback_helper.rb
-
1
l.store "Show conversation", ""
-
1
l.store "Flag as %s", ""
-
-
# app/helpers/application_helper.rb
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M:%%S GMT", ""
-
1
l.store "%%d. %%b", ""
-
1
l.store "%d comments", ""
-
1
l.store "no comments", "nėra komentarų"
-
1
l.store "1 comment", ""
-
1
l.store "no trackbacks", "nėra dienoraščio nuorodų"
-
1
l.store "1 trackback", ""
-
1
l.store "%d trackbacks", ""
-
-
# app/helpers/content_helper.rb
-
1
l.store "Posted in", ""
-
1
l.store "Tags", "Žymės"
-
1
l.store "no posts", ""
-
1
l.store "1 post", ""
-
1
l.store "%d posts", ""
-
-
# app/models/article.rb
-
1
l.store "Original article writen by", ""
-
1
l.store "and published on", ""
-
1
l.store "direct link to this article", ""
-
1
l.store "If you are reading this article elsewhere than", ""
-
1
l.store "it has been illegally reproduced and without proper authorization", ""
-
-
# app/models/blog.rb
-
1
l.store "You need a permalink format with an identifier : %%month%%, %%year%%, %%day%%, %%title%%", ""
-
1
l.store "Can't end in .rss or .atom. These are reserved to be used for feed URLs", ""
-
-
# app/models/feedback/states.rb
-
1
l.store "Unclassified", ""
-
1
l.store "Just Presumed Ham", ""
-
1
l.store "Ham?", ""
-
1
l.store "Just Marked As Ham", ""
-
1
l.store "Ham", ""
-
1
l.store "Spam?", ""
-
1
l.store "Just Marked As Spam", ""
-
1
l.store "Spam", ""
-
-
# app/views/accounts/login.html.erb
-
1
l.store "I've lost my password", ""
-
1
l.store "Login", "Prisijungimas"
-
1
l.store "Password", "slaptažodis"
-
1
l.store "Remember me", ""
-
1
l.store "Submit", ""
-
1
l.store "Back to ", ""
-
-
# app/views/accounts/recover_password.html.erb
-
1
l.store "Username or email", ""
-
-
# app/views/accounts/signup.html.erb
-
1
l.store "Create an account", ""
-
1
l.store "Username", "Vartotojo vardas"
-
1
l.store "Email", "El. pašto adresas"
-
1
l.store "Signup", "Registracija"
-
-
# app/views/admin/categories/_categories.html.erb
-
1
l.store "Title", "Pavadinimas"
-
1
l.store "Reorder", "Rikiuoti"
-
1
l.store "Sort alphabetically", "Rikiuoti pagal abėcėlę"
-
-
# app/views/admin/categories/_form.html.erb
-
1
l.store "Keywords", ""
-
-
# app/views/admin/categories/destroy.html.erb
-
1
l.store "Are you sure you want to delete the category ", "Ar tikrai nori ištrinti šią kategoriją : "
-
1
l.store "Delete this category", "Trinti šią kategoriją"
-
1
l.store "Categories", ""
-
-
# app/views/admin/categories/index.html.erb
-
1
l.store "New Category", ""
-
-
# app/views/admin/categories/new.html.erb
-
1
l.store "%s Category", ""
-
-
# app/views/admin/categories/reorder.html.erb
-
1
l.store "(Done)", "(Baigta)"
-
-
# app/views/admin/content/_attachment.html.erb
-
1
l.store "Remove", "Pašalinti"
-
1
l.store "Currently this article has the following resources", "Šiuo metu straipsnis turi šiuos resursus"
-
1
l.store "You can associate the following resources", "Jūs galite susieti su šiais resursais"
-
1
l.store "Really delete attachment", "Ištrinti prikabintus failus"
-
1
l.store "Add Another Attachment", "Prikabinti kitą failą"
-
-
# app/views/admin/content/_drafts.html.erb
-
1
l.store "Drafts", ""
-
-
# app/views/admin/content/_form.html.erb
-
1
l.store "Publish settings", ""
-
1
l.store "Allow comments", "Leisti komentarus"
-
1
l.store "Allow trackbacks", "Leisti dienoraščių nuorodas"
-
1
l.store "Password:", ""
-
1
l.store "Publish", "Publikuoti"
-
1
l.store "Excerpt", ""
-
1
l.store "Excerpts are posts summaries that are shown on your blog homepage only but won’t appear on the post itself", ""
-
1
l.store "Uploads", ""
-
1
l.store "Post settings", ""
-
1
l.store "Publish at", "Publikuotas"
-
1
l.store "Permalink", "Nuoroda"
-
1
l.store "Article filter", "Straipsnių filtras"
-
1
l.store "Save as draft", ""
-
-
# app/views/admin/content/destroy.html.erb
-
1
l.store "Are you sure you want to delete this article", "Ar tikrai norite ištrinti šį straipsnį"
-
1
l.store "Delete this article", "Trinti šį straipsnį"
-
1
l.store "Articles", ""
-
-
# app/views/admin/content/index.html.erb
-
1
l.store "New Article", ""
-
1
l.store "Search articles that contain ...", ""
-
1
l.store "Search", ""
-
1
l.store "Author", "Autorius"
-
1
l.store "Date", ""
-
1
l.store "Feedback", "Atsiliepimas"
-
1
l.store "Filter", ""
-
1
l.store "Manage articles", ""
-
-
# app/views/admin/dashboard/_comments.html.erb
-
1
l.store "Latest Comments", ""
-
1
l.store "No comments yet", ""
-
1
l.store "By %s on %s", ""
-
-
# app/views/admin/dashboard/_inbound.html.erb
-
1
l.store "Inbound links", ""
-
1
l.store "No one made a link to you yet", ""
-
1
l.store " made a link to you saying ", ""
-
1
l.store "You have no internet connection", ""
-
-
# app/views/admin/dashboard/_overview.html.erb
-
1
l.store "This place gives you a quick overview of what happens on your Typo blog and what you can do. Maybe will you want to %s, %s or %s.", ""
-
1
l.store "update your profile or change your password", ""
-
1
l.store "You can also do a bit of design, %s or %s.", ""
-
1
l.store "change your blog presentation", ""
-
1
l.store "enable plugins", ""
-
1
l.store "write a post", ""
-
1
l.store "write a page", ""
-
-
# app/views/admin/dashboard/_popular.html.erb
-
1
l.store "Most popular", ""
-
1
l.store "Nothing to show yet", ""
-
-
# app/views/admin/dashboard/_posts.html.erb
-
1
l.store "Latest Posts", ""
-
1
l.store "No posts yet, why don't you start and write one", ""
-
-
# app/views/admin/dashboard/_typo_dev.html.erb
-
1
l.store "Latest news from the Typo development blog", ""
-
1
l.store "Oh no, nothing new", ""
-
-
# app/views/admin/dashboard/_welcome.html.erb
-
1
l.store "Welcome back, %s!", ""
-
1
l.store "%d articles and %d comments were posted since your last connexion", ""
-
1
l.store "You're running Typo %s", ""
-
1
l.store "Total posts : %d", ""
-
1
l.store "Your posts : %d", ""
-
1
l.store "Total comments : %d", ""
-
1
l.store "Spam comments : %d", ""
-
-
# app/views/admin/feedback/_button.html.erb
-
1
l.store "Select action", ""
-
1
l.store "Delete Checked Items", ""
-
1
l.store "Delete all spam", ""
-
1
l.store "Mark Checked Items as Spam", ""
-
1
l.store "Mark Checked Items as Ham", ""
-
1
l.store "All comments", ""
-
1
l.store "Limit to ham", ""
-
1
l.store "Unapproved comments", ""
-
1
l.store "Limit to spam", "Spamo limitas"
-
-
# app/views/admin/feedback/_form.html.erb
-
1
l.store "Add a comment", ""
-
1
l.store "Url", "Url adresas"
-
-
# app/views/admin/feedback/_spam.html.erb
-
1
l.store "This comment by <strong>%s</strong> was flagged as spam, %s?", ""
-
-
# app/views/admin/feedback/article.html.erb
-
1
l.store "Comments for %s", ""
-
1
l.store "Status", "Statusas"
-
1
l.store "Comment Author", ""
-
1
l.store "Comment", ""
-
-
# app/views/admin/feedback/edit.html.erb
-
1
l.store "Comments for", "Komentarai"
-
-
# app/views/admin/feedback/index.html.erb
-
1
l.store "Search Comments and Trackbacks that contain", ""
-
1
l.store "Article", ""
-
-
# app/views/admin/pages/_form.html.erb
-
1
l.store "Online", "Pasiekiamas"
-
1
l.store "Page settings", ""
-
1
l.store "Permanent link", ""
-
-
# app/views/admin/pages/destroy.html.erb
-
1
l.store "Pages","Seiten"
-
1
l.store "Are you sure you want to delete the page", "Sind Sie sicher, diese Seite zu löschen"
-
1
l.store "Delete this page", "Diese Seite löschen"
-
-
# app/views/admin/pages/index.html.erb
-
1
l.store "New Page", ""
-
1
l.store "Manage pages", ""
-
-
# app/views/admin/profiles/index.html.erb
-
1
l.store "Your profile", ""
-
-
# app/views/admin/resources/_mime_edit.html.erb
-
1
l.store "Content Type", "Content Type"
-
-
# app/views/admin/resources/_pages.html.erb
-
1
l.store "Previous page", "Buvęs puslapis" # reikia kitaip kazkaip
-
1
l.store "Next page", "Sekantis puslapis"
-
-
# app/views/admin/resources/_upload.html.erb
-
1
l.store "Upload a File to your Site", "Legen Sie einen Dateianhang an ihrer Site an"
-
1
l.store "File", ""
-
1
l.store "Upload", "Upload"
-
-
# app/views/admin/resources/destroy.html.erb
-
1
l.store "Are you sure you want to delete this file", "Sind Sie sicher, diese Datei zu löschen"
-
1
l.store "Delete this file from the webserver?", "Diese Datei vom Webserver löschen?"
-
1
l.store "File Uploads", "Dateianhänge"
-
-
# app/views/admin/resources/images.html.erb
-
1
l.store "Thumbnail", ""
-
1
l.store "File Size", "Dateigröße"
-
1
l.store "Images", ""
-
1
l.store "right-click for link", ""
-
-
# app/views/admin/resources/index.html.erb
-
1
l.store "Filename", "Dateiname"
-
-
# app/views/admin/settings/_submit.html.erb
-
1
l.store "Update settings", ""
-
-
# app/views/admin/settings/feedback.html.erb
-
1
l.store "Enable comments by default", "Kommentare per default erlauben"
-
1
l.store "Enable Trackbacks by default", "Trackbacks per default aktivieren"
-
1
l.store "Enable feedback moderation", "Moderation von Kommentaren aktivieren"
-
1
l.store "You can enable site wide feeback moderation. If you do so, no comment or trackback will appear on your blog unless you validate it", ""
-
1
l.store "Comments filter", "Komentarų filtras"
-
1
l.store "Enable gravatars", "Gratavare aktivieren"
-
1
l.store "Show your email address", "Ihre Email Adresse anzeigen"
-
1
l.store "Notifications", ""
-
1
l.store "Typo can notify you when new articles or comments are posted", "Typo kann Sie benachrichtigen, wenn neue Artikel oder Kommentare angelegt werden"
-
1
l.store "Source Email", "Email Adresse"
-
1
l.store "Email address used by Typo to send notifications", "Email Adresse, die Typo beim Versenden von Benachrichtigungen verwenden soll"
-
1
l.store "Enabling spam protection will make typo compare the IP address of posters as well as the contents of their posts against local and remote blacklists. Good defense against spam bots", "Bei Aktivierung des Spamschutzes wird Typo sowohl die IP Adresse des Autors als auch den Inhalt seiner Veröffentlichung gegen lokale und entfernte Blacklisten vergleichen. Gute Abwehr von Spambots"
-
1
l.store "Enable spam protection", "Spamschutz aktivieren"
-
1
l.store "Akismet Key", "Akismet Key"
-
1
l.store "Typo can (optionally) use the %s spam-filtering service. You need to register with Akismet and receive an API key before you can use their service. If you have an Akismet key, enter it here", "Typo kann (optional) den %s Spam-Filterdienst verwenden. Sie müssen sich dort registriert und einen API Key erhalten haben, bevor Sie diesen Dienst nutzen können. Wenn Sie einen solchen Key haben, geben Sie ihn hier ein"
-
1
l.store "Disable trackbacks site-wide", ""
-
1
l.store "This setting allows you to disable trackbacks for every article in your blog. It won't remove existing trackbacks, but it will prevent any further attempt to add a trackback anywhere on your blog.", "Diese Option erlaubt es Ihnen, Trackbacks für alle Artikel im gesamten Blog zu deaktivieren. Dadurch werden zwar keine bereits existierenden Trackbacks entfernt, aber alle zukünftig irgendwo in Ihrem Blog eintreffenden Trackbacks werden abgewiesen."
-
1
l.store "Disable comments after", "Kommentare abschalten nach"
-
1
l.store "days", "Tagen"
-
1
l.store "Set to 0 to never disable comments", "Wert 0 bewirkt, dass die Möglichkeit für Kommentare immer bestehen bleibt"
-
1
l.store "Max Links", "Maximale Anzahl Links"
-
1
l.store "Typo will automatically reject comments and trackbacks which contain over a certain amount of links in them", "Typo kann automatisch Kommentare und Trackbacks abweisen, die mehr als eine bestimmte Anzahl von Links enthalten"
-
1
l.store "Set to 0 to never reject comments", "Wert 0 bewirkt, dass Kommentare nie abgewiesen werden"
-
1
l.store "Feedback settings", ""
-
-
# app/views/admin/settings/index.html.erb
-
1
l.store "Your blog", "Tavo dienoraščio adresas"
-
1
l.store "Blog name", "Dienoraščio pavadinimas"
-
1
l.store "Blog subtitle", "Dienoraščio subpavadinimas" #
-
1
l.store "Blog URL", "Dienoraščio adresas"
-
1
l.store "Language", "Kalba"
-
1
l.store "Allow users to register", ""
-
1
l.store "You can allow users to register to your blog. By default, they will register as contributors, an unpriviledged account level which grant them no rights but own a profile on the site. If you don't want users to register, you can thus add them by yourself in the users part of this admin.", ""
-
1
l.store "Items to display in admin lists", ""
-
1
l.store "Publishing options", ""
-
1
l.store "Display", "Rodyti"
-
1
l.store "articles on my homepage by default", "straipsniai pradžioje pagal nutylėjimą"
-
1
l.store "articles in my news feed by default", "straipsniai naujienų sraute pagal nutylėjimą"
-
1
l.store "Show full article on feed", "Rodyti pilną straipsnį RSS sraute"
-
1
l.store "Feedburner ID", ""
-
1
l.store "General settings", "Pagrindiniai nustatymai"
-
1
l.store "You can use your Google Feedburner account instead of Typo feed URL. To enable this, fill this form with your Feedburner ID.", ""
-
-
# app/views/admin/settings/seo.html.erb
-
1
l.store "Search Engine Optimisation", ""
-
1
l.store "Format of permalink", ""
-
1
l.store "Google Analytics", ""
-
1
l.store "Google verification link", ""
-
1
l.store "Meta description", ""
-
1
l.store "Meta keywords", ""
-
1
l.store "Use RSS description", ""
-
1
l.store "Index categories", ""
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every category page, removing them from search engines and preventing duplicate content issues", ""
-
1
l.store "Index tags", ""
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every tags page, removing them from search engines and preventing duplicate content issues", ""
-
1
l.store "Robots.txt", ""
-
1
l.store "You robots.txt file is not writeable. Typo won't be able to write it", ""
-
1
l.store "Search Engine Optimization", ""
-
1
l.store "This will display", ""
-
1
l.store "at the bottom of each of your post in the RSS feed", ""
-
-
# app/views/admin/settings/update_database.html.erb
-
1
l.store "Information", "Information"
-
1
l.store "Current database version", "Aktuelle Datenbank Version"
-
1
l.store "New database version", "Neue Datenbank Version"
-
1
l.store "Your database supports migrations", "Ihre Datenbank unterstützt Migrationen"
-
1
l.store "Needed migrations", "Migrationen sind notwendig"
-
1
l.store "You are up to date!", "Sie sind auf dem aktuellsten Stand!"
-
1
l.store "Update database now", "Update der Datenbank jetzt"
-
1
l.store "may take a moment", "dauert einen Moment"
-
1
l.store "Database migration", "Datenbank Migration"
-
1
l.store "yes", "ja"
-
1
l.store "no", "nein"
-
-
# app/views/admin/settings/write.html.erb
-
1
l.store "Send trackbacks", "Siųsti dienoraščių nuorodas"
-
1
l.store "When publishing articles, Typo can send trackbacks to websites that you link to. This should be disabled for private blogs as it will leak non-public information to sites that you're discussing. For public blogs, there's no real point in disabling this.", "Publikuojant straipsnius Typo gali siųsti dienoraščių nuorodas į puslapius, į kuriuos jūs rodote. Tai gali būti išjungta ant privačių dienoraščių, bet viešuose nėra priežasties išjungti šio nustatymo" # need fix
-
1
l.store "URLs to ping automatically", "URL adresai į kuriuos pranešti automatiškai"
-
1
l.store "Latitude, Longitude", "Geografinė platuma, ilguma"
-
1
l.store "your lattitude and longitude", "Tavo geografinė platuma ir ilguma"
-
1
l.store "exemple", "Pavyzdys"
-
1
l.store "Write", "Rašyti"
-
-
# app/views/admin/sidebar/_availables.html.erb
-
1
l.store "You have no plugins installed", "Sie haben keine Plugins installiert"
-
-
# app/views/admin/sidebar/_publish.html.erb
-
1
l.store "Changes published", "Änderungen veröffentlicht"
-
-
# app/views/admin/sidebar/_target.html.erb
-
1
l.store "Drag some plugins here to fill your sidebar", "Ziehen Sie Plugins hierher, um sie in die Seitenleiste aufzunehmen"
-
-
# app/views/admin/sidebar/index.html.erb
-
1
l.store "Drag and drop to change the sidebar items displayed on this blog. To remove items from the sidebar just click remove Changes are saved immediately, but not activated until you click the 'Publish' button", "Verwenden Sie Drag&Drop, um die Einträge der Seitenleiste ihres Blogs zu ändern. Um Einträge zu löschen, klicken Sie auf 'remove'. Änderungen sind hier sofort sichtbar, werden aber erst permanent aktiviert, wenn Sie 'Änderungen veröffentlichen' klicken."
-
1
l.store "Available Items", "Verfügbare Einträge"
-
1
l.store "Active Sidebar items", "Aktive Einträge der Seitenleiste"
-
1
l.store "Get more plugins", ""
-
1
l.store "Sidebar", ""
-
1
l.store "Publish changes", "Änderungen veröffentlichen"
-
-
# app/views/admin/tags/_form.html.erb
-
1
l.store "Display name", "Rodomas vardas"
-
-
# app/views/admin/tags/destroy.html.erb
-
1
l.store "Are you sure you want to delete the tag", ""
-
1
l.store "Delete this tag", ""
-
-
# app/views/admin/tags/edit.html.erb
-
1
l.store "Editing ", ""
-
1
l.store "Back to tags list", ""
-
-
# app/views/admin/tags/index.html.erb
-
1
l.store "Display Name", ""
-
1
l.store "Manage tags", ""
-
-
# app/views/admin/themes/catalogue.html.erb
-
1
l.store "Sorry the theme catalogue is not available", ""
-
1
l.store "Theme catalogue", ""
-
-
# app/views/admin/themes/editor.html.erb
-
1
l.store "Theme editor", ""
-
-
# app/views/admin/themes/index.html.erb
-
1
l.store "Active theme", "Aktives Motiv"
-
1
l.store "Get more themes", ""
-
1
l.store "You can download third party themes from officially supported %s ", ""
-
1
l.store "Typogarden", ""
-
1
l.store "To install a theme you just need to upload the theme folder into your themes directory. Once a theme is uploaded, you should see it on this page.", ""
-
1
l.store "Choose a theme", "Motiv auswählen"
-
-
# app/views/admin/users/_form.html.erb
-
1
l.store "Account settings", ""
-
1
l.store "Password confirmation", ""
-
1
l.store "Profile", ""
-
1
l.store "User's status", ""
-
1
l.store "Active", ""
-
1
l.store "Inactive", ""
-
1
l.store "Profile Settings", ""
-
1
l.store "Firstname", ""
-
1
l.store "Lastname", ""
-
1
l.store "Nickname", ""
-
1
l.store "Editor", ""
-
1
l.store "Use simple editor", ""
-
1
l.store "Use visual rich editor", ""
-
1
l.store "Send notification messages via email", "Benachrichtigung via Email schicken"
-
1
l.store "Send notification messages when new articles are posted", "Benachrichtigung schicken, wenn neue Artikel veröffentlicht werden"
-
1
l.store "Send notification messages when comments are posted", "Benachrichtigung schicken, wenn neue Kommentare eintreffen"
-
1
l.store "Contact Options", ""
-
1
l.store "Your site", ""
-
1
l.store "display url on public profile", ""
-
1
l.store "Your MSN", ""
-
1
l.store "display MSN ID on public profile", ""
-
1
l.store "Your Yahoo ID", ""
-
1
l.store "display Yahoo! ID on public profile", ""
-
1
l.store "Your Jabber ID", ""
-
1
l.store "display Jabber ID on public profile", ""
-
1
l.store "Your AIM id", ""
-
1
l.store "display AIM ID on public profile", ""
-
1
l.store "Your Twitter username", ""
-
1
l.store "display twitter on public profile", ""
-
1
l.store "Tell us more about you", ""
-
-
# app/views/admin/users/destroy.html.erb
-
1
l.store "Really delete user", "Benutzer wirklich löschen"
-
1
l.store "Yes", ""
-
1
l.store "Users", ""
-
-
# app/views/admin/users/edit.html.erb
-
1
l.store "Edit User", "Benutzer bearbeiten"
-
-
# app/views/admin/users/index.html.erb
-
1
l.store "New User", "Neuer Benutzer"
-
1
l.store "Comments", ""
-
1
l.store "State", ""
-
1
l.store "%s user", ""
-
-
# app/views/admin/users/new.html.erb
-
1
l.store "Add User", ""
-
-
# app/views/articles/_article.html.erb
-
1
l.store "Posted by", "Parašė"
-
1
l.store "Continue reading", ""
-
-
# app/views/articles/_comment.html.erb
-
1
l.store "said", "pasakė"
-
1
l.store "This comment has been flagged for moderator approval. It won't appear on this blog until the author approves it", "Komentaras laukia moderatoriaus patvirtinimo" # sutrumpinua, man rodos logiskaiu
-
-
# app/views/articles/_comment_box.html.erb
-
1
l.store "Your name", "Tavo vardas"
-
1
l.store "Your email", "Tavo el. pašto adresas"
-
1
l.store "Your message", "Tavo žinutė"
-
1
l.store "Comment Markup Help", "Komentaro sintaksės žymėjimo pagalba"
-
1
l.store "Preview comment", "Peržiūrėti komentarą"
-
1
l.store "leave url/email", ""
-
-
# app/views/articles/_comment_failed.html.erb
-
1
l.store "Oops, something wrong happened, the comment could not be saved", ""
-
-
# app/views/articles/_trackback.html.erb
-
1
l.store "From", "Nuo"
-
-
# app/views/articles/archives.html.erb
-
1
l.store "No articles found", "Straipsnių nėra"
-
1
l.store "posted in", ""
-
-
# app/views/articles/comment_preview.html.erb
-
1
l.store "is about to say", "pasakoja apie"
-
-
# app/views/articles/groupings.html.erb
-
1
l.store "There are", "Čia yra"
-
-
# app/views/articles/read.html.erb
-
1
l.store "Leave a response", "Palikti atsakymą"
-
1
l.store "Trackbacks", ""
-
1
l.store "Use the following link to trackback from your own site", "Dienoraščio nuoroda (trackback)"
-
1
l.store "RSS feed for this post", "šio įrašo RSS"
-
1
l.store "trackback uri", "Trackback URI"
-
1
l.store "Comments are disabled", "Komentavimas išjungtas"
-
-
# app/views/authors/show.html.erb
-
1
l.store "Web site:", ""
-
1
l.store "MSN:", ""
-
1
l.store "Yahoo:", ""
-
1
l.store "Jabber:", ""
-
1
l.store "AIM:", ""
-
1
l.store "Twitter:", ""
-
1
l.store "About %s", ""
-
1
l.store "This author has not published any article yet", ""
-
-
# app/views/comments/show.html.erb
-
1
l.store "This comment has been flagged for moderator approval.", ""
-
-
# app/views/layouts/administration.html.erb
-
1
l.store "%s »", ""
-
1
l.store "is proudly powered by", ""
-
1
l.store "Dashboard", ""
-
-
# app/views/setup/index.html.erb
-
1
l.store "Welcome", ""
-
1
l.store "Welcome to your %s blog setup. Just fill in your blog title and your email, and Typo will take care of everything else", ""
-
-
# app/views/shared/_confirm.html.erb
-
1
l.store "Congratulation!", ""
-
1
l.store "You have successfully signed up", ""
-
1
l.store "<strong>Login:</strong> %s", ""
-
1
l.store "<strong>Password:</strong> %s", ""
-
1
l.store "Don't lose the mail sent at %s or you won't be able to login anymore", ""
-
1
l.store "Proceed to %s", ""
-
1
l.store "admin", ""
-
-
# app/views/shared/_search.html.erb
-
1
l.store "Live Search", ""
-
-
# test/mocks/themes/typographic/layouts/default.html.erb
-
1
l.store "Powered by %s", ""
-
1
l.store "Designed by %s ", ""
-
-
# test/mocks/themes/typographic/views/articles/_article.html.erb
-
1
l.store "Continue reading...", ""
-
1
l.store "This entry was posted on %s", ""
-
1
l.store "and %s", ""
-
1
l.store "You can follow any response to this entry through the %s", ""
-
1
l.store "Atom feed", ""
-
1
l.store "You can leave a %s", ""
-
1
l.store "or a %s from your own site", ""
-
1
l.store "Read full article", ""
-
1
l.store "comment", ""
-
1
l.store "trackback", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment.html.erb
-
1
l.store "later", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment_form.html.erb
-
1
l.store "Leave a comment", ""
-
1
l.store "Name %s", ""
-
1
l.store "enabled", ""
-
1
l.store "never displayed", ""
-
1
l.store "Website", ""
-
1
l.store "Textile enabled", ""
-
1
l.store "Markdown enabled", ""
-
1
l.store "required", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment_list.html.erb
-
1
l.store "No comments", ""
-
-
# test/mocks/themes/typographic/views/shared/_search.html.erb
-
1
l.store "Searching", ""
-
-
# themes/dirtylicious/layouts/default.html.erb
-
1
l.store "Home", ""
-
1
l.store "About", ""
-
1
l.store "Designed by %s ported to typo by %s ", ""
-
-
# themes/scribbish/layouts/default.html.erb
-
1
l.store "styled with %s", ""
-
-
# themes/scribbish/views/articles/_article.html.erb
-
1
l.store "Meta", ""
-
1
l.store "permalink", ""
-
-
# themes/true-blue-3/helpers/theme_helper.rb
-
1
l.store "You are here: ", ""
-
1
l.store "%d comment", ""
-
-
# themes/true-blue-3/views/articles/_article.html.erb
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M", ""
-
-
# themes/true-blue-3/views/articles/_comment.html.erb
-
1
l.store "By", ""
-
1
l.store "later:", ""
-
-
# themes/true-blue-3/views/articles/_comment_form.html.erb
-
1
l.store "Email address", ""
-
1
l.store "Your website", ""
-
-
# themes/true-blue-3/views/articles/read.html.erb
-
1
l.store "If you liked this article you can %s", ""
-
1
l.store "add me to Twitter", ""
-
1
l.store "Trackbacks for", "Trackback für"
-
-
# themes/true-blue-3/views/articles/search.html.erb
-
1
l.store "Search results for:", ""
-
-
# themes/true-blue-3/views/categories/index.html.erb
-
1
l.store "Read all articles in %s", ""
-
-
# themes/true-blue-3/views/categories/show.html.erb
-
1
l.store "Previous", ""
-
1
l.store "Next", ""
-
-
# vendor/plugins/archives_sidebar/views/content.rhtml
-
1
l.store "Archives", "Archyvas"
-
-
# vendor/plugins/authors_sidebar/views/content.rhtml
-
1
l.store "Authors", ""
-
-
# vendor/plugins/xml_sidebar/views/content.rhtml
-
1
l.store "Syndicate", "Syndikat"
-
1
l.store "Category %s", ""
-
1
l.store "Tag %s", ""
-
-
# Obsolete translations
-
1
l.store "%d Articles", ["Straipsnis", "%d Straipsniai"]
-
1
l.store "%d Categories", ["Kategorija", "%d Kategorijos"]
-
1
l.store "%d Comments", ["Komentaras", "%d Komentarai"]
-
1
l.store "%d Tags", ["Žymė", "%d Žymės"]
-
1
l.store "%d Trackbacks", ["dienoraščio nuoroda", "%d dienoraščių nuorodos"]
-
1
l.store "%d Users", ["Vartotojas", "%d Vartotojai"]
-
1
l.store "AIM Presence", "AIM Anwesenheit"
-
1
l.store "AIM Status", "AIM Status"
-
1
l.store "Action", "Aktion"
-
1
l.store "Activate", "Aktivieren"
-
1
l.store "Add MetaData", "Metadaten hinzufügen"
-
1
l.store "Add category", "Pridėti kategoriją"
-
1
l.store "Add new user", "Neuen Benutzer anlegen"
-
1
l.store "Add pattern", "Pridėti šabloną" #
-
1
l.store "Allow non-ajax comments", "non-AJAX Kommentare erlauben"
-
1
l.store "Are you sure you want to delete this filter", "Sind sie sicher, diesen Textfilter zu löschen"
-
1
l.store "Are you sure you want to delete this item?", "Ar jūs tikrai nori ištrinti šį įrašą?" #
-
1
l.store "Article Attachments", "Straipsnio prikabinti failai"
-
1
l.store "Article Body", "Straipsnio tekstas" #straipsnio kūnas niekur nesako, reikia tinkamesnio
-
1
l.store "Article Content", "Straipsnio turinys"
-
1
l.store "Article Options", "Straipsnio nustatymai"
-
1
l.store "Articles in", "Straipsniai"
-
1
l.store "Attachments", "Prikabinta"
-
1
l.store "Back to the blog", "Grįžti į dienoraštį"
-
1
l.store "Blacklist", "Juodasis sąrašas"
-
1
l.store "Blacklist Patterns", "Juodojo sąrašo šablonas"
-
1
l.store "Blog settings", "Dienoraščio nustatymai"
-
1
l.store "Body", "Tekstas"
-
1
l.store "Cache", "Cache"
-
1
l.store "Category title", "kategorijos pavadinimas"
-
1
l.store "Choose password", "Pasirinkite slaptažodį"
-
1
l.store "Comments and Trackbacks for", "Komentarai ir dienoraščių nuorodos"
-
1
l.store "Confirm password", "Pakartokite slaptažodį"
-
1
l.store "Copyright Information", "Copyright Informationen"
-
1
l.store "Create new Blacklist", "Kurti naują juodajį sąrašą"
-
1
l.store "Create new category", "Kurti naują kategoriją"
-
1
l.store "Create new page", "Neue Seite anlegen"
-
1
l.store "Create new text filter", "Neuen Textfilter anlegen"
-
1
l.store "Creating comment", "Kuriamas komentaras"
-
1
l.store "Creating text filter", "Textfilter anlegen"
-
1
l.store "Creating trackback", "Trackback anlegen"
-
1
l.store "Creating user", "Benutzer anlegen"
-
1
l.store "Currently this article is listed in following categories", "Šiuo metu šis straipsnis yra sekančiose kategorijose"
-
1
l.store "Customize Sidebar", "Seitenleiste einstellen"
-
1
l.store "Delete this filter", "Diesen Textfilter löschen"
-
1
l.store "Design", "Dizainas"
-
1
l.store "Desired login", "Trokštamas prisijungimo vardas"
-
1
l.store "Discuss", "Diskusijos"
-
1
l.store "Do you want to go to your blog?", "Jūs norėtumėte eiti į jūsų dienoraštį?"
-
1
l.store "Duration", "Dauer"
-
1
l.store "Edit Article", "Redaguoti straipsnį"
-
1
l.store "Edit MetaData", "Metadaten bearbeiten"
-
1
l.store "Edit this article", "Redaguoti šį straipsnį"
-
1
l.store "Edit this category", "Redaguoti šią kategoriją"
-
1
l.store "Edit this filter", "Filter bearbeiten"
-
1
l.store "Edit this page", "Diese Seite bearbeiten"
-
1
l.store "Edit this trackback", "Trackback bearbeiten"
-
1
l.store "Editing User", "Aufbereitung des Benutzers"
-
1
l.store "Editing category", "Kategorijos redagavimas"
-
1
l.store "Editing comment", "Redaguojamas komentaras"
-
1
l.store "Editing page", "Seite bearbeiten"
-
1
l.store "Editing pattern", "Redaguoti šabloną"
-
1
l.store "Editing textfilter", "Textfilter bearbeiten"
-
1
l.store "Editing trackback", "Trackback bearbeiten"
-
1
l.store "Empty Fragment Cache", "Cache leeren"
-
1
l.store "Explicit", "Explizit"
-
1
l.store "Extended Content", "Išplėstas turinys"
-
1
l.store "Feedback Search", "Atsiliepimų paieška"
-
1
l.store "Filters", "Filter"
-
1
l.store "General Settings", "Pagrindiniai nustatymai"
-
1
l.store "IP", "IP adresas"
-
1
l.store "Jabber", "Jabber"
-
1
l.store "Jabber account", "Jabber Account"
-
1
l.store "Jabber account to use when sending Jabber notifications", "Jabber Account für das Senden von Jabber Benachrichtigungen"
-
1
l.store "Jabber password", "Jabber Passwort"
-
1
l.store "Key Words", "Schlagwörter"
-
1
l.store "Last updated", "Paskutinis atnaujinimas"
-
1
l.store "Limit to unconfirmed", "Nepatvirtintų limitas"
-
1
l.store "Limit to unconfirmed spam", "Nepatvirtinto spamo limitas"
-
1
l.store "Location", "Adresse"
-
1
l.store "Logoff", "Atsijungti"
-
1
l.store "Macro Filter Help", "Hilfe zu Makrofilter"
-
1
l.store "Macros", "Makros"
-
1
l.store "Manage", "Valdyti"
-
1
l.store "Manage Articles", "Valdyti Straipsnius"
-
1
l.store "Manage Categories", "Valdyti kategorijas"
-
1
l.store "Manage Pages", "Valdyti puslapius"
-
1
l.store "Manage Resources", "Valdyti resursus"
-
1
l.store "Manage Text Filters", "Textfilter verwalten"
-
1
l.store "Markup", "Markup"
-
1
l.store "Markup type", "Markup Typ"
-
1
l.store "MetaData", "Metadaten"
-
1
l.store "Not published by Apple", "Nicht von Apple publiziert"
-
1
l.store "Notification", "Priminimai"
-
1
l.store "Notified", "Benachrichtigt"
-
1
l.store "Notify on new articles", "Benachrichtigung bei neuen Artikeln"
-
1
l.store "Notify on new comments", "Benachrichtigung bei neuen Kommentaren"
-
1
l.store "Notify via email", "Benachrichtigung via Email"
-
1
l.store "Number of Articles", "Anzahl Artikel"
-
1
l.store "Number of Comments", "Anzahl Kommentare"
-
1
l.store "Offline", "Nepasiekiamas"
-
1
l.store "Older posts", "Senesni straipsniai"
-
1
l.store "Optional Name", "Optionaler Name"
-
1
l.store "Page Body", "Seiteninhalt"
-
1
l.store "Page Options", "Seiten Optionen"
-
1
l.store "Parameters", "Parameter"
-
1
l.store "Password Confirmation", "Passwort bestätigen"
-
1
l.store "Pattern", "Šablonas" # pavyzdys forma ?
-
1
l.store "Pictures from", "Paveiksliukai iš"
-
1
l.store "Post title", "Žinutės pavadinimas"
-
1
l.store "Post-processing filters", "Filter für Post-Processing"
-
1
l.store "Posted at", "publikuota"
-
1
l.store "Posted date", "Publikavimo data"
-
1
l.store "Preview Article", "Peržiūrėti straipsnį "
-
1
l.store "Read", "Skaityti"
-
1
l.store "Read more", "Plačiau"
-
1
l.store "Rebuild cached HTML", "Im Cache gespeicherte HTML Seiten neu generieren"
-
1
l.store "Recent comments", "Paskutiniai komentarai"
-
1
l.store "Recent trackbacks", "paskutinės dienoraščių nuorodos"
-
1
l.store "Regex", "Reguliarioji išraiška" # kvailai skamba bet kaip kitaip ?
-
1
l.store "Remove iTunes Metadata", "iTunes Metadaten entfernen"
-
1
l.store "Resource MetaData", "Metadaten der Ressource"
-
1
l.store "Resource Settings", "Resursų nustatymai"
-
1
l.store "Save Settings", "Išsaugoti nustatymus"
-
1
l.store "See help text for this filter", "Hilfe für diesen Filter"
-
1
l.store "Set iTunes metadata for this enclosure", "iTunes Metadaten für diesen Anhang festlegen"
-
1
l.store "Setting for channel", "Kanaloptionen"
-
1
l.store "Settings", "Nustatymai"
-
1
l.store "Show Help", "Hilfe"
-
1
l.store "Show this article", "Rodyti šį straipsnį"
-
1
l.store "Show this category", "Rodyti šią kategoriją"
-
1
l.store "Show this comment", "Rodyti šį komentarą"
-
1
l.store "Show this page", "Diese Seite anzeigen"
-
1
l.store "Show this pattern", "Rodyti šį šabloną"
-
1
l.store "Show this user", "Diesen Benutzer anzeigen"
-
1
l.store "Spam Protection", "Spamo apsauga"
-
1
l.store "Spam protection", "Spamschutz"
-
1
l.store "String", "Eilutė"
-
1
l.store "Subtitle", "Untertitel"
-
1
l.store "Summary", "Zusammenfassung"
-
1
l.store "Text Filter Details", "Details zum Textfilter"
-
1
l.store "Text Filters", "Textfilter"
-
1
l.store "Textfilter", "Teksto filtras"
-
1
l.store "The below settings act as defaults when you choose to publish an enclosure with iTunes metadata", "Folgende Einstellungen wirken als Voreinstellungen, wenn Sie einen Anhang mit iTunes Metadaten veröffentlichen"
-
1
l.store "There are %d entries in the cache", "Es sind %d Einträge im Cache"
-
1
l.store "Things you can do", "Jūs galite daryti ..."
-
1
l.store "This option let you choose between the simple admin interface or the complete one, displaying much more options and therefore more complicated to use. For advanced users only!","This option let you choose between the simple admin interface or the complete one, displaying much more options and therefore more complicated to use. For advanced users only!" #Need translate
-
1
l.store "Toggle Extended Content", "Sutraukti išplėsta turinį"
-
1
l.store "Type", "Tipas"
-
1
l.store "Typo admin", "Typo administravimas"
-
1
l.store "Upload a new File", "Eine neue Datei hochladen"
-
1
l.store "Upload a new Resource", "Eine neue Ressource hochladen"
-
1
l.store "Uploaded", "Upload beendet"
-
1
l.store "User's articles", "Artikel des Benutzers"
-
1
l.store "View article on your blog", "Rodyti straipsnį dienoraštyje"
-
1
l.store "View comment on your blog", "Rodyti komentarą dienoraštyje"
-
1
l.store "View page on your blog", "Seite in Ihrem Blog anschauen"
-
1
l.store "Which settings group would you like to edit", "Kurią nustatymų grupę norėtum redaguoti"
-
1
l.store "Write a Page", "Kurti puslapį"
-
1
l.store "Write an Article", "Kurti straipsnį"
-
1
l.store "XML Syndication", "XML Syndikat"
-
1
l.store "You are now logged out of the system", "Jūs esate prisijungęs prie sistemos"
-
1
l.store "You can add it to the following categories", "Jūs galite pridėti jį į sekančias kategorijas"
-
1
l.store "You can enable site wide feedback moderation. If you do so, no comment or trackback will appear on your blog unless you validate it", "Sie können die Moderation von Kommentaren auf der gesamten Website aktivieren. Dann erscheinen keine Kommentare oder Trackbacks in Ihrem Blog, die sie nicht überprüft haben"
-
1
l.store "You can optionally disable non-Ajax comments. Typo will always use Ajax for comment submission if Javascript is enabled, so non-Ajax comments are either from spammers or users without Javascript.", "Sie können optional non-Ajax Kommentare verbieten. Typo verwendet immer Ajax für die Übertragung von Kommentaren, sofern Javascript eingeschaltet ist. non-Ajax Kommentare stamme somit entweder von Spammern oder von Anwendern ohne aktiviertes Javascript."
-
1
l.store "by", "bei"
-
1
l.store "log out", "Atsijungti"
-
1
l.store "on", "įjungta"
-
1
l.store "seperate with spaces", "mit Leerzeichen trennen"
-
1
l.store "via email", "per Email"
-
1
l.store "with %s Famfamfam iconset %s", "su %s Famfamfam ikonomis %s"
-
1
l.store "your blog", "Tavo dienoraštis"
-
end
-
# coding: utf-8
-
1
Localization.define("nb_NO") do |l|
-
# Available languages
-
1
l.store "da_DK", "Dansk"
-
1
l.store "de_DE", "Tysk"
-
1
l.store "en_US", "Engelsk (Amerikansk)"
-
1
l.store "es_MX", "Spansk (Mexikansk)"
-
1
l.store "fr_FR", "Fransk"
-
1
l.store "he_IL", "Hebraisk"
-
1
l.store "it_IT", "Italiensk"
-
1
l.store "ja_JP", "Japansk"
-
1
l.store "lt_LT", "Litauansk"
-
1
l.store "nb_NO", "Norsk"
-
1
l.store "nl_NL", "Hollandsk"
-
1
l.store "pl_PL", "Polsk"
-
1
l.store "ro_RO", "Rumensk"
-
1
l.store "zh_TW", "Kinesisk"
-
-
# app/controllers/accounts_controller.rb
-
1
l.store "Login successful", "Logget inn"
-
1
l.store "Login unsuccessful", "Feil under innlogging"
-
1
l.store "An email has been successfully sent to your address with your new password", "En epost er sendt til din adresse med ditt nye passord"
-
1
l.store "Oops, something wrong just happened", "Ojsann, noe gikk galt"
-
1
l.store "Successfully logged out", "Logget ut"
-
1
l.store "login", "Logg inn"
-
1
l.store "signup", "Registrer"
-
1
l.store "Recover your password", "Gjenopprett passord"
-
-
# app/controllers/admin/cache_controller.rb
-
1
l.store "Cache was successfully sweeped", "Cache er kostet rent (sweeped)"
-
1
l.store "Oops, something wrong happened. Cache could not be cleaned", "Ojsann, noe galt hendte. Cache kunne ikke rengjøres"
-
-
# app/controllers/admin/categories_controller.rb
-
1
l.store "Category was successfully saved.", "Kategori lagret"
-
1
l.store "Category could not be saved.", "Kan ikke lagre kategori"
-
-
# app/controllers/admin/content_controller.rb
-
1
l.store "Error, you are not allowed to perform this action", "Du har ikke tillatelse til å utføre denne handlingen"
-
1
l.store "This article was deleted successfully", "Artikkelen er slettet"
-
1
l.store "Preview", "Forhåndsvisning"
-
1
l.store "Article was successfully created", "Artikkel opprettet"
-
1
l.store "Article was successfully updated.", "Artikkel oppdatert"
-
-
# app/controllers/admin/dashboard_controller.rb
-
1
l.store "You are late from at least one major version of Typo. You should upgrade immediately. Download and install %s", "Du bruker en gammel versjon av Typo. Du bør oppgradere snarest. Last ned og installer %s"
-
1
l.store "the latest Typo version", "den siste versjonan av Typo"
-
1
l.store "There's a new version of Typo available which may contain important bug fixes. Why don't you upgrade to %s ?", "Det finnes en ny versjon av Typo som kan inneholde viktige feilrettelser. Hva med å oppgradere til %s?"
-
1
l.store "There's a new version of Typo available. Why don't you upgrade to %s ?", "Det finnes en ny versjon av Typo. Hva med å oppgradere til %s?"
-
-
# app/controllers/admin/feedback_controller.rb
-
1
l.store "Deleted", "Slettet"
-
1
l.store "Not found", "Ikke funnet"
-
1
l.store "Deleted %d item(s)", "Slettet %d enheter"
-
1
l.store "Marked %d item(s) as Ham", "Markerte %d enhet(er) som Ham"
-
1
l.store "Marked %d item(s) as Spam", "Markerte %d enhet(er) som Spam"
-
1
l.store "Confirmed classification of %s item(s)", "Bekreftet klassifisering av %s enhet(er)"
-
1
l.store "Not implemented", "Ikke implementert"
-
1
l.store "All spam have been deleted", "All spam er slettet"
-
1
l.store "Comment was successfully created.", "Kommentar opprettet"
-
1
l.store "Comment was successfully updated.", "Kommentar oppdatert"
-
-
# app/controllers/admin/pages_controller.rb
-
1
l.store "Page was successfully created.", "Side opprettet"
-
1
l.store "Page was successfully updated.", "Side oppdatert"
-
-
# app/controllers/admin/profiles_controller.rb
-
1
l.store "User was successfully updated.", "Bruker oppdatert"
-
-
# app/controllers/admin/redirects_controller.rb
-
1
l.store "Redirection was successfully deleted.", "Omdirigering slettet"
-
1
l.store "Redirection was successfully saved.", "Omdirigering lagret"
-
1
l.store "Redirection could not be saved.", "Omdirigering kan ikke lagres"
-
-
# app/controllers/admin/resources_controller.rb
-
1
l.store "complete", "ferdig"
-
1
l.store "File uploaded: ", "Lastet opp fil: "
-
1
l.store "Unable to upload", "Kan ikke laste opp"
-
1
l.store "Metadata was successfully updated.", "Metadata oppdatert"
-
1
l.store "Not all metadata was defined correctly.", "Noe metadata var definert feil"
-
-
# app/controllers/admin/seo_controller.rb
-
1
l.store "config updated.", "Innstillinger oppdatert"
-
-
# app/controllers/admin/settings_controller.rb
-
1
l.store "Please review and save the settings before continuing", "Vennligst les igjennom og lagre innstillingene før du fortsetter"
-
-
# app/controllers/admin/sidebar_controller.rb
-
1
l.store "It seems something went wrong. Maybe some of your sidebars are actually missing and you should either reinstall them or remove them manually", "Noe gikk galt. Kanskje en av dine sidekolonner mangler og du burde reinstallere den eller fjerne den manuelt"
-
-
# app/controllers/admin/tags_controller.rb
-
1
l.store "Tag was successfully updated.", "Tag oppdatert"
-
-
# app/controllers/admin/themes_controller.rb
-
1
l.store "Theme changed successfully", "Tema endret"
-
1
l.store "You are not authorized to open this file", "Du har ikke tillatelse til å åpne denne filen"
-
1
l.store "File does not exist", "Filen finnes ikke"
-
1
l.store "File saved successfully", "Fil lagret"
-
1
l.store "Unable to write file", "Kan ikke skrive til filen"
-
-
# app/controllers/admin/users_controller.rb
-
1
l.store "User was successfully created.", "Bruker opprettet"
-
-
# app/controllers/application_controller.rb
-
1
l.store "Localization.rtl", ""
-
-
# app/controllers/articles_controller.rb
-
1
l.store "No posts found...", "Ingen poster."
-
-
# app/controllers/grouping_controller.rb
-
1
l.store "page", "side"
-
-
# app/helpers/accounts_helper.rb
-
1
l.store "Create an account", "Opprett konto"
-
1
l.store "I've lost my password", "Jeg har mistet passordet mitt"
-
1
l.store "Back to ", "Tilbake til"
-
-
# app/helpers/admin/base_helper.rb
-
1
l.store "Cancel", "Annuller"
-
1
l.store "Store", "Lagre"
-
1
l.store "Delete", "Slett"
-
1
l.store "delete", "slett"
-
1
l.store "Delete content", "Slett innhold"
-
1
l.store "Are you sure?", "Er du sikker?"
-
1
l.store "none", "ingen"
-
1
l.store "Please select", "Vennligst velg"
-
1
l.store "There are no %s yet. Why don't you start and create one?", "Det finnes ingen %s enda. Hva med å opprette en?"
-
1
l.store "or", "eller"
-
1
l.store "Save", "Lagre"
-
1
l.store "Short url:", "Kort URL:"
-
1
l.store "Edit", "Rediger"
-
1
l.store "Show", "Vis"
-
1
l.store "Published", "Publisert"
-
1
l.store "Unpublished", "Ikke publisert"
-
1
l.store "Show help on Typo macros", "Vis hjelp i Typo makroer"
-
1
l.store "Update settings", "Oppdater innstillinger"
-
1
l.store "Back to list", "Tilbake til listen"
-
1
l.store "Name", "Navn"
-
1
l.store "Description", "Beskrivelse"
-
1
l.store "Tag", "Tag"
-
-
# app/helpers/admin/categories_helper.rb
-
1
l.store "no articles", "ingen artikler"
-
1
l.store "1 article", "1 artikkel"
-
1
l.store "%d articles", "%d artikler"
-
-
# app/helpers/admin/content_helper.rb
-
1
l.store "Destroy this draft", "Slett dette utkastet"
-
-
# app/helpers/admin/feedback_helper.rb
-
1
l.store "Show conversation", "Vis samtale"
-
1
l.store "Flag as %s", "Flagg som %s"
-
-
# app/helpers/application_helper.rb
-
1
l.store "%%d. %%b", ""
-
1
l.store "Are you sure you want to delete this %s?", "Er du sikker på at du vil slette denne %s?"
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M:%%S GMT", ""
-
1
l.store "%d comments", "%d kommentarer"
-
1
l.store "no comments", "ingen kommentarer"
-
1
l.store "1 comment", "1 kommentar"
-
1
l.store "no trackbacks", "ingen trackbacks"
-
1
l.store "1 trackback", "1 trackback"
-
1
l.store "%d trackbacks", "%d trackbacks"
-
1
l.store "at", "klokken"
-
-
# app/models/blog.rb
-
1
l.store "You need a permalink format with an identifier : %%title%%", "Du må bruke et permalenkeformat med identifikator: %%title%%"
-
1
l.store "Can't end in .rss or .atom. These are reserved to be used for feed URLs", "Kan ikke slutte på .rss eller .atom. Disse er reserverte for feed-URLer"
-
-
# app/models/feedback/states.rb
-
1
l.store "Unclassified", "Uklassifisert"
-
1
l.store "Just Presumed Ham", "Kun antatt Ham"
-
1
l.store "Ham?", "Ham?"
-
1
l.store "Just Marked As Ham", "Kun markert som Ham"
-
1
l.store "Ham", "Ham"
-
1
l.store "Spam?", "Spam?"
-
1
l.store "Just Marked As Spam", "Kun markert som Spam"
-
1
l.store "Spam", "Spam"
-
-
# app/views/accounts/login.html.erb
-
1
l.store "Login", "Logg inn"
-
1
l.store "Password", "Passord"
-
1
l.store "Remember me", "Husk meg"
-
1
l.store "Submit", "Send inn"
-
-
# app/views/accounts/recover_password.html.erb
-
1
l.store "Username or email", "Brukernavn eller epost"
-
1
l.store "Reset my password", "Nullstill passordet mitt"
-
-
# app/views/accounts/signup.html.erb
-
1
l.store "Username", "Brukernavn"
-
1
l.store "Email", "Epost"
-
1
l.store "Signup", "Registrer"
-
-
# app/views/admin/cache/index.html.erb
-
1
l.store "To save resources Typo caches content in static files. Cache is cleared each time something gets published. You may however want to clear the cache by yourself",
-
"For å lagre resurser cacher Typo innholdet i statiske filer. Cachen slettes hver gang noe publiseres. Du kan også velge å slette cachen selv."
-
1
l.store "There are currently %d files in cache for a total amount of %d Kb", "Det finnes for øyeblikket %d filer i cachen som utgjør totalt %d kB"
-
1
l.store "Sweep cache", ""
-
1
l.store "Cache", "Cache"
-
-
# app/views/admin/categories/_categories.html.erb
-
1
l.store "Title", "Tittel"
-
1
l.store "Permalink", "Permanent link"
-
1
l.store "Keywords", "Nøkkelord"
-
1
l.store "Reorder", "Arranger"
-
1
l.store "Sort alphabetically", "Sorter alfabetisk"
-
-
# app/views/admin/categories/destroy.html.erb
-
1
l.store "Are you sure you want to delete the category ", "Er du sikker på du vil slette kategorien: "
-
1
l.store "Delete this category", "Slett denne kategorien"
-
1
l.store "Categories", "Kategorier"
-
-
# app/views/admin/categories/new.html.erb
-
1
l.store "%s Category", "%s kategori"
-
-
# app/views/admin/categories/reorder.html.erb
-
1
l.store "(Done)", "(Ferdig)"
-
-
# app/views/admin/content/_attachment.html.erb
-
1
l.store "Remove", "Slett"
-
1
l.store "Currently this article has the following resources", "Artiklen har følgende ressourser"
-
1
l.store "You can associate the following resources", "Du kan koble til følgende ressourser"
-
1
l.store "Really delete attachment", "Vil du virkelig slette vedlagt fil"
-
1
l.store "Add Another Attachment", "Vedlegg enda en fil"
-
-
# app/views/admin/content/_drafts.html.erb
-
1
l.store "Drafts", "Utkast"
-
-
# app/views/admin/content/_form.html.erb
-
1
l.store "Publish settings", "Publiseringsinnstillinger"
-
1
l.store "Allow comments", "Tillat kommentarer"
-
1
l.store "Allow trackbacks", "Tillat Trackbacks"
-
1
l.store "Password:", "Passord"
-
1
l.store "Publish", "Publiser"
-
1
l.store "Tags", "Tags"
-
1
l.store "Excerpt", "Utdrag"
-
1
l.store "Excerpts are posts summaries that are shown on your blog homepage only but won’t appear on the post itself", "Utdrag er oppsummeringer som vises på bloggsiden, men ikke i artikkelen"
-
1
l.store "Uploads", "Opplastede filer"
-
1
l.store "Post settings", "Postinnstillinger"
-
1
l.store "Publish at", "Offentliggjort den"
-
1
l.store "Article filter", "artikkelfilter"
-
1
l.store "Save as draft", "Lagre som utkast"
-
-
# app/views/admin/content/destroy.html.erb
-
1
l.store "Are you sure you want to delete this article", "Er du sikker på du vil slette denne artikkelen"
-
1
l.store "Delete this article", "Slett denne artikkelen"
-
1
l.store "Articles", "Artikler"
-
-
# app/views/admin/content/index.html.erb
-
1
l.store "New Article", "Ny artikkel"
-
1
l.store "Search", "Søk"
-
1
l.store "Filter", "Filtrer"
-
1
l.store "Author", "Forfatter"
-
1
l.store "Date", "Dato"
-
1
l.store "Feedback", "Diskusjon"
-
1
l.store "Manage articles", "Administrer artikler"
-
-
# app/views/admin/dashboard/_comments.html.erb
-
1
l.store "Latest Comments", "Siste kommentarer"
-
1
l.store "No comments yet", "Ingen kommentarer"
-
1
l.store "By", "Av"
-
-
# app/views/admin/dashboard/_inbound.html.erb
-
1
l.store "Inbound links", "Innkommende lenker"
-
1
l.store "No one made a link to you yet", "Ingen har lenket til deg"
-
1
l.store "made a link to you on", "opprettet en lenke til deg den"
-
1
l.store "You have no internet connection", "Du har ingen internettforbindelse"
-
-
# app/views/admin/dashboard/_overview.html.erb
-
1
l.store "This place gives you a quick overview of what happens on your Typo blog and what you can do. Maybe will you want to %s, %s or %s.", "Dette stedet gir deg en rask oversikt over hva som foregår på din Typo-blogg og hva du kan gjøre. Kanskje du ønsker å %s, %s eller %s."
-
1
l.store "update your profile or change your password", "oppdatere profilen din eller endre passordet ditt"
-
1
l.store "You can also do a bit of design, %s or %s.", "Du kan også tilpasse utseendet, %s eller %s."
-
1
l.store "change your blog presentation", "endre utseende på bloggen din"
-
1
l.store "enable plugins", "aktivere plugins"
-
1
l.store "If you need help, %s. You can also browse our %s or %s to customize your Typo blog.", "Hvis du behøver hjelp, %s. Du kan også se gjennom vår %s eller %s for å tilpasse Typo-bloggen din."
-
1
l.store "write a post", "skrive en artikkel"
-
1
l.store "write a page", "skrive en side"
-
1
l.store "read our documentation", "les dokumentasjonen vår"
-
1
l.store "theme catalogue", "temakatalog"
-
1
l.store "download some plugins", "last ned noen plugins"
-
-
# app/views/admin/dashboard/_popular.html.erb
-
1
l.store "Most popular", "Mest populære"
-
1
l.store "Nothing to show yet", "Ingenting å vise enda"
-
-
# app/views/admin/dashboard/_posts.html.erb
-
1
l.store "Latest Posts", "Siste poster"
-
1
l.store "No posts yet, why don't you start and write one", "Det finnes ingen artikler enda. Hvorfor ikke skrive en"
-
-
# app/views/admin/dashboard/_typo_dev.html.erb
-
1
l.store "Latest news from the Typo development blog", "Siste nytt fra utviklingsbloggen til Typo"
-
1
l.store "Oh no, nothing new", "Dessverre, ingenting nytt"
-
-
# app/views/admin/dashboard/_welcome.html.erb
-
1
l.store "Welcome back, %s!", "Velkommen tilbake, %s!"
-
1
l.store "%d articles and %d comments were posted since your last connexion", "%d artikler og %d kommentarer siden forrige besøk"
-
1
l.store "You're running Typo %s", "Du bruker Typo versjon %s"
-
1
l.store "Content", "Innhold"
-
1
l.store "Total posts:", "Antall artikler:"
-
1
l.store "Your posts:", "Dine artikler:"
-
1
l.store "Categories:", "Kategorier:"
-
1
l.store "Total comments:", "Antall kommentarer:"
-
1
l.store "Spam comments:", "Spam-kommentarer:"
-
1
l.store "In your spam queue:", "I Spam-køen:"
-
-
# app/views/admin/feedback/_button.html.erb
-
1
l.store "Select action", "Velg handling"
-
1
l.store "Delete Checked Items", "Slett markerte enheter"
-
1
l.store "Delete all spam", "Slett all Spam"
-
1
l.store "Mark Checked Items as Spam", "Flagg markerte enheter som Spam"
-
1
l.store "Mark Checked Items as Ham", "Flagg markerte enheter som Ham"
-
1
l.store "Display", "Vis"
-
1
l.store "All comments", "Alle kommentarer"
-
1
l.store "Limit to ham", "Begrens til Ham"
-
1
l.store "Limit to presumed ham", "Begrens til antatt Ham"
-
1
l.store "Limit to presumed spam", "Begrens til antatt Spam"
-
1
l.store "Unapproved comments", "Kommentarer på vent"
-
1
l.store "Limit to spam", "Begrens til Spam"
-
-
# app/views/admin/feedback/_form.html.erb
-
1
l.store "Add a comment", "Legg til kommentar"
-
1
l.store "Url", "URL"
-
-
# app/views/admin/feedback/_spam.html.erb
-
1
l.store "This comment by <strong>%s</strong> was flagged as spam, %s?", "Denne kommentaren av <strong>%s</strong> er flagget som Spam, %s?"
-
-
# app/views/admin/feedback/article.html.erb
-
1
l.store "Comments for %s", "Kommentarer for %s"
-
1
l.store "Status", "Status"
-
1
l.store "Comment Author", "Kommentarforfatter"
-
1
l.store "Comment", "Kommentar"
-
-
# app/views/admin/feedback/destroy.html.erb
-
1
l.store "Are you sure you want to delete this %s", "Er du sikker på at du vil slette denne %s?"
-
1
l.store "Delete this feedback", "Slett feedback"
-
1
l.store "%s", ""
-
-
# app/views/admin/feedback/index.html.erb
-
1
l.store "Search Comments and Trackbacks that contain", "Søk etter kommentarer og Trackbacks som inneholder"
-
1
l.store "Article", "Artikkel"
-
1
l.store "Select all", "Velg alle"
-
-
# app/views/admin/pages/_form.html.erb
-
1
l.store "Online", "Online"
-
1
l.store "Page settings", "Sideinnstillinger"
-
1
l.store "Permanent link", "Permanent lenke"
-
-
# app/views/admin/pages/destroy.html.erb
-
1
l.store "Pages", "Sider"
-
1
l.store "Are you sure you want to delete the page", "Er du sikker på du vil slette denne siden"
-
1
l.store "Delete this page", "Slett denne side"
-
-
# app/views/admin/pages/index.html.erb
-
1
l.store "New Page", "Ny side"
-
1
l.store "Manage pages", "Administrer sider"
-
-
# app/views/admin/profiles/index.html.erb
-
1
l.store "Your profile", "Din profil"
-
-
# app/views/admin/redirects/destroy.html.erb
-
1
l.store "Are you sure you want to delete the redirection ", "Er du sikker på at du vil slette omdirigeringen "
-
1
l.store "from %s to %s", "fra %s til %s"
-
1
l.store "Delete this redirection", "Slett denne omdirigeringen"
-
1
l.store "Redirects", "Omdirigeringer"
-
-
# app/views/admin/redirects/index.html.erb
-
1
l.store "New Redirect", "Ny omdirigering"
-
1
l.store "From", "Fra"
-
1
l.store "To", "Til"
-
-
# app/views/admin/redirects/new.html.erb
-
1
l.store "%s Redirect", "%s omdirigering"
-
-
# app/views/admin/resources/_pages.html.erb
-
1
l.store "Previous page", "Forrige side"
-
1
l.store "Next page", "Neste side"
-
-
# app/views/admin/resources/_upload.html.erb
-
1
l.store "Upload a File to your Site", "Last opp en fil til siden din"
-
1
l.store "File", "Fil"
-
1
l.store "Upload", "Last opp"
-
-
# app/views/admin/resources/destroy.html.erb
-
1
l.store "Are you sure you want to delete this file", "Er du sikker på du vil slette denne filen"
-
1
l.store "Delete this file from the webserver?", "Slett denne filen fra webtjeneren?"
-
1
l.store "File Uploads", "Opplastede filer"
-
-
# app/views/admin/resources/index.html.erb
-
1
l.store "Filename", "Filnavn"
-
1
l.store "Content Type", "Innholdstype (Content Type)"
-
1
l.store "File Size", "Filstørrelse"
-
1
l.store "Thumbnail", "Thumbnail"
-
1
l.store "Medium size", "Mellomstor"
-
1
l.store "Original size", "Opprinnelig størrelse"
-
1
l.store "right-click for link", "høyreklikk for lenke"
-
-
# app/views/admin/seo/index.html.erb
-
1
l.store "General settings", "Generelle innstillinger"
-
1
l.store "Use meta keywords", "Bruk metanøkkelord"
-
1
l.store "Meta description", "Metabeskrivelse"
-
1
l.store "Meta keywords", "Metanøkkelord"
-
1
l.store "Use RSS description", "Bruk RSS-beskrivelse"
-
1
l.store "RSS description message", "Melding for RSS-beskrivelse"
-
1
l.store "Indexing", "Indekserer"
-
1
l.store "Do not index categories", "Ikke indekser kategorier"
-
1
l.store "Checking this box will add <code>noindex, follow</code> meta tags in every category page, removing them from search engines and preventing duplicate content issues", ""
-
1
l.store "Do not index tags", "Ikke indekser tagger"
-
1
l.store "Checking this box will add <code>noindex, follow</code> meta tags in every tags page, removing them from search engines and preventing duplicate content issues", ""
-
1
l.store "Robots.txt", "Robots.txt"
-
1
l.store "You robots.txt file is not writeable. Typo won't be able to write it", "Din robots.txt er ikke skrivbar. Typo vil ikke kunne skrive til den"
-
1
l.store "Use dofollow in comments", "Bruk dofollow i kommentarer"
-
1
l.store "Maybe you want to moderate feedbacks when turning this on", "Kanskje du ønsker å moderere feedbacks når du slår på denne"
-
1
l.store "Use canonical URL", "Bruk kanonisk URL"
-
1
l.store "Read more about %s", "Les mer om %s"
-
1
l.store "Google", ""
-
1
l.store "Google Analytics", ""
-
1
l.store "Google Webmaster Tools validation link", ""
-
1
l.store "Global settings", "Globale innstillinger"
-
1
l.store "This will display", "Dette vil vise"
-
1
l.store "at the bottom of each of your post in the RSS feed", "på bunnen av hver artikkel i RSS-feeden"
-
-
# app/views/admin/seo/permalinks.html.erb
-
1
l.store "Format of permalink", "Permalinkformat"
-
1
l.store "Typo offers you the ability to create a custom URL structure for your permalinks and archives. This can improve the aesthetics, usability, and forward-compatibility of your links.", "Typo tilbyr deg muligheten til å opprette en tilpasset URL-struktur for dine permalenker og arkiver. Dette kan forbedre estetikken, brukervennligheten og foroverkompatibiliteten til dine lenker."
-
1
l.store "You can custom your URL structure using the following tags:", "Du kan tilbasse URL-strukturen din ved å bruke følgende tags:"
-
1
l.store "your article slug. <strong>Using this slug is mandatory</strong>.", "Din artikkel-slug. <strong>Det er påkrevd å bruke denne slug</strong>."
-
1
l.store "your article year of publication.", "din artikkels publiseringsår"
-
1
l.store "your article month of publication.", "din artikkels publiseringmåned"
-
1
l.store "your article day of publication.", "din artikkels publiseringsdag"
-
1
l.store "Permalinks", "Permalenker"
-
-
# app/views/admin/seo/titles.html.erb
-
1
l.store "Title settings", "Tittelinnstillinger"
-
1
l.store "Title template", "Mønster for tittel"
-
1
l.store "Description template", "Mønster for beskrivelse"
-
1
l.store "Help on title settings", "Hjelp med tittelinnstillinger"
-
1
l.store "Replaced with the title of the article/page", "Erstatted med tittelen til artikkelen/siden"
-
1
l.store "The blog's name", "Bloggens navn"
-
1
l.store "The blog's tagline / description", "Bloggens undertittel/beskrivelse"
-
1
l.store "Replaced with the post/page excerpt", "Erstattet med utdrag fra artikkelen/siden"
-
1
l.store "Replaced with the article tags (comma separated)", "Erstattet med artikkelens tags (kommaseparert)"
-
1
l.store "Replaced with the article categories (comma separated)", "Erstattet med artikkelens kategorier (kommaseparert)"
-
1
l.store "Replaced with the article/page title", "Erstattet med artikkelens/sidens tittel"
-
1
l.store "Replaced with the category/tag name", "Erstattet med kategori-/tagnavn"
-
1
l.store "Replaced with the current search phrase", "Erstattet med nåværende søketekst"
-
1
l.store "Replaced with the current time", "Erstattet med nåværende tid"
-
1
l.store "Replaced with the current date", "Erstattet med nåværende dato"
-
1
l.store "Replaced with the current month", "Erstattet med nåværende måned"
-
1
l.store "Replaced with the current year", "Erstattet med nåværende år"
-
1
l.store "Replaced with the current page number", "Erstattet med nåværende sidetall"
-
1
l.store "Replaced by the archive date", "Erstattet av arkivdato"
-
1
l.store "Titles", "Titler"
-
-
# app/views/admin/settings/feedback.html.erb
-
1
l.store "Enable comments by default", "Aktiver kommentarer som standard"
-
1
l.store "Enable Trackbacks by default", "Aktiver Trackbacks som standard"
-
1
l.store "Enable feedback moderation", "Aktiver feedback-moderering"
-
1
l.store "You can enable site wide feeback moderation. If you do so, no comment or trackback will appear on your blog unless you validate it", "Du kan aktivere feedback-moderering for hele siden. Dersom du gjør det vil ingen kommentarer eller trackbacks vises på bloggen din uten at du har godkjent dem"
-
1
l.store "Comments filter", "Kommentarfilter"
-
1
l.store "Avatars provider", "Avatartilbyder"
-
1
l.store "Show your email address", "Vis din epostadresse"
-
1
l.store "Enabling spam protection will make typo compare the IP address of posters as well as the contents of their posts against local and remote blacklists. Good defense against spam bots", "Enabling spam protection will make typo compare the IP address of posters as well as the contents of their posts against local and remote blacklists. Good defense against spam bots"
-
1
l.store "Enable spam protection", "Aktiver Spam-beskyttelse"
-
1
l.store "Akismet Key", "Akismet-nøkkel"
-
1
l.store "Typo can (optionally) use the %s spam-filtering service. You need to register with Akismet and receive an API key before you can use their service. If you have an Akismet key, enter it here", "Typo can (optionally) use the %s spam-filtering service. You need to register with Akismet and receive an API key before you can use their service. If you have an Akismet key, enter it here"
-
1
l.store "Disable trackbacks site-wide", "Deaktiver Trackbacks på hele siden"
-
1
l.store "This setting allows you to disable trackbacks for every article in your blog. It won't remove existing trackbacks, but it will prevent any further attempt to add a trackback anywhere on your blog.", "Denne innstillingen gir deg mulighet for å daktivere Trackbacks for hver artikkel i bloggen din. Eksisterende Trackbacks vil ikke fjernes, men det vil forhindre nye forsøk på å legge til Trackbacks over hele bloggen din."
-
1
l.store "Disable comments after", "Deaktiver kommentarer etter"
-
1
l.store "days", "dager"
-
1
l.store "Set to 0 to never disable comments", "Sett til 0 for å aldri deaktivere kommentarer"
-
1
l.store "Max Links", "Maks antall lenker"
-
1
l.store "Typo will automatically reject comments and trackbacks which contain over a certain amount of links in them", "Typo will automatically reject comments and trackbacks which contain over a certain amount of links in them"
-
1
l.store "Set to 0 to never reject comments", "Sett til 0 for å aldri forkaste kommentarer"
-
1
l.store "Enable reCaptcha", "Aktiver reCaptcha"
-
1
l.store "Remember to set your reCaptcha keys inside config/initializers/recaptcha.rb", "Husk å sette reCaptcha-nøklene dine i filen config/initializers/recaptcha.rb"
-
1
l.store "Feedback settings", "Feedback-innstillinger"
-
-
# app/views/admin/settings/index.html.erb
-
1
l.store "Your blog", "Din blogg"
-
1
l.store "Blog name", "Bloggtittel"
-
1
l.store "Blog subtitle", "Undertittel for blogg"
-
1
l.store "Blog URL", "Bloggadresse"
-
1
l.store "Language", "Språk"
-
1
l.store "Allow users to register", "Tillat brukere å registrere seg"
-
1
l.store "You can allow users to register to your blog. By default, they will register as contributors, an unpriviledged account level which grant them no rights but own a profile on the site. If you don't want users to register, you can thus add them by yourself in the users part of this admin.", "Du kan tillate brukere å registrere seg på bloggen din. Som standard vil de registreres som bidragsytere, et upriviligert kontonivå som kun gir dem en egen profil på websiden. Dersom du ikke ønsker at brukere skal kunne registrere seg, så kan du legge dem til selv under brukerkontoer."
-
1
l.store "Typo can notify you when new articles or comments are posted", "Typo kan gi deg beskjed når nye artikler eller kommentarer er mottatt"
-
1
l.store "Source Email", "Epostavsender"
-
1
l.store "Email address used by Typo to send notifications", "Epostadresse som brukes av Typo til å sende beskjeder"
-
1
l.store "Items to display in admin lists", "Enheter å vise i adminlisten"
-
1
l.store "Date format", "Datoformat"
-
1
l.store "ago", "siden"
-
1
l.store "Time format", "Klokkeformat"
-
1
l.store "Publishing options", "Publiseringsvalg"
-
1
l.store "articles on my homepage by default", "artikler på min hjemmeside som standard"
-
1
l.store "articles in my news feed by default", "artikler i min nyhetsfeed som standard"
-
1
l.store "Show only article excerpt on feed", "Vis bare artikkelens utdrag i feed"
-
1
l.store "Feedburner ID", "Feedburner ID"
-
1
l.store "You can use your Google Feedburner account instead of Typo feed URL. To enable this, fill this form with your Feedburner ID.", "Du kan bruke din Gooogle Feedburner-konto istedet for Typo feed URL. For å aktivere dette, fyll ut dette skjemaet med din Feedburner ID."
-
-
# app/views/admin/settings/update_database.html.erb
-
1
l.store "Information", "Informasjon"
-
1
l.store "Current database version", "Nåværende databaseversjon"
-
1
l.store "New database version", "Ny databaseversjon"
-
1
l.store "Your database supports migrations", "Din database støtter migrations"
-
1
l.store "Needed migrations", "Manglende migrations"
-
1
l.store "You are up to date!", "Du er oppdatert!"
-
1
l.store "Update database now", "Oppdater database nå"
-
1
l.store "may take a moment", "kan vare et øyeblikk"
-
1
l.store "Database migration", "Databasemigreringer"
-
1
l.store "yes", "ja"
-
1
l.store "no", "nei"
-
-
# app/views/admin/settings/write.html.erb
-
1
l.store "Send trackbacks", "Send trackbacks"
-
1
l.store "When publishing articles, Typo can send trackbacks to websites that you link to. This should be disabled for private blogs as it will leak non-public information to sites that you're discussing. For public blogs, there's no real point in disabling this.", "Når du publiserer artikler kan Typo sende trackbacks til de hjemmesider du lenker til. Dette bør deaktiveres for private blogger da det ellers kan lekke privat informasjion til hjemmesider du diskuterer. For offentlige blogger, er det ingen reell mening i å deaktivere dette."
-
1
l.store "URLs to ping automatically", "Nettadresser som skal pinges automatisk"
-
1
l.store "Latitude, Longitude", "Breddegrad, lengdegrad"
-
1
l.store "your lattitude and longitude", "din breddegrad og lengdegrad"
-
1
l.store "exemple", "for eksempel"
-
1
l.store "Media", ""
-
1
l.store "Image thumbnail size", "Liten bildestørrelse"
-
1
l.store "Image medium size", "Mellomstor bildestørrelse"
-
1
l.store "Write", "Skriv"
-
-
# app/views/admin/sidebar/_publish.html.erb
-
1
l.store "Changes published", "Endringer publisert"
-
-
# app/views/admin/sidebar/_target.html.erb
-
1
l.store "Drag some plugins here to fill your sidebar", "Dra og slipp plugins hit for å populere sidebar"
-
-
# app/views/admin/sidebar/index.html.erb
-
1
l.store "Drag and drop to change the sidebar items displayed on this blog. To remove items from the sidebar just click remove Changes are saved immediately, but not activated until you click the 'Publish' button", "Dra og slipp for at Dra og slipp innholdsendreen der vises på denne blog. Du kan fjerne elementer fra oversiktsoversikten bare ved at klikke fjern. endringer gemmes med det samme, men ikke aktiveret, før du klikker på 'Offentliggør' knappen."
-
1
l.store "Available Items", "Tilgjengelige enheter"
-
1
l.store "You have no plugins installed", "Du har ikke installert noen plugins"
-
1
l.store "Active Sidebar items", "Aktive sidebar-enheter"
-
1
l.store "Get more plugins", "Hent flere plugins"
-
1
l.store "Sidebar", ""
-
1
l.store "Publish changes", "Publiser endringer"
-
-
# app/views/admin/tags/destroy.html.erb
-
1
l.store "Are you sure you want to delete the tag", "Er du sikker på at du vil slette denne taggen"
-
1
l.store "Delete this tag", "Slett denne taggen"
-
-
# app/views/admin/tags/edit.html.erb
-
1
l.store "Editing ", "Redigerer"
-
-
# app/views/admin/tags/index.html.erb
-
1
l.store "Display Name", "Visningsnavn"
-
1
l.store "Manage tags", "Behandle tags"
-
-
# app/views/admin/themes/catalogue.html.erb
-
1
l.store "Sorry the theme catalogue is not available", "Beklager, men temakatalogen er ikke tilgjengelig"
-
1
l.store "Theme catalogue", "Temakatalog"
-
-
# app/views/admin/themes/editor.html.erb
-
1
l.store "Stylesheets", ""
-
1
l.store "Layout", ""
-
1
l.store "Theme editor", ""
-
-
# app/views/admin/themes/index.html.erb
-
1
l.store "Active theme", "Aktivt tema"
-
1
l.store "Chose this theme", "Velg dette temaet"
-
1
l.store "Get more themes", "Hent flere temaer"
-
1
l.store "You can download third party themes from officially supported %s ", "Du kan laste ned tredjepartstemaer fra offisielt støttede %s "
-
1
l.store "Typogarden", ""
-
1
l.store "To install a theme you just need to upload the theme folder into your themes directory. Once a theme is uploaded, you should see it on this page.", "For å installere et tema må du laste opp temakatalogen til themes-katalogen til Typo. Når et tema er lastet opp, vil du se det på denne siden."
-
1
l.store "Choose a theme", "Velg et tema"
-
-
# app/views/admin/users/_form.html.erb
-
1
l.store "Account settings", "Kontoinnstillinger"
-
1
l.store "Password confirmation", "Gjenta passord"
-
1
l.store "Profile", "Profil"
-
1
l.store "User's status", "Brukerens status"
-
1
l.store "Active", "Aktiv"
-
1
l.store "Inactive", "Inaktiv"
-
1
l.store "Profile Settings", "Profilinnstillinger"
-
1
l.store "Firstname", "Fornavn"
-
1
l.store "Lastname", "Etternavn"
-
1
l.store "Nickname", "Nick"
-
1
l.store "Editor", "Tekstbehandler"
-
1
l.store "Use simple editor", "Bruk enkel tekstbehandler"
-
1
l.store "Use visual rich editor", "Bruk visuelt rik tekstbehandler"
-
1
l.store "Notifications", "Beskjeder"
-
1
l.store "Send notification messages via email", "Send beskjeder via epost"
-
1
l.store "Send notification messages when new articles are posted", "Send beskjeder når nye artikler blir publisert"
-
1
l.store "Send notification messages when comments are posted", "Send beskjeder når det kommer nye kommentarer"
-
1
l.store "Contact Options", "Kontaktinformasjon"
-
1
l.store "Your site", "Din hjemmeside"
-
1
l.store "display url on public profile", "Vis hjemmeside på din profil"
-
1
l.store "Your MSN", "Din MSN ID"
-
1
l.store "display MSN ID on public profile", "Vis din MSN ID på din profil"
-
1
l.store "Your Yahoo ID", "Din Yahoo ID"
-
1
l.store "display Yahoo! ID on public profile", "Vis din Yahoo ID på din profil"
-
1
l.store "Your Jabber ID", "Din Jabber ID"
-
1
l.store "display Jabber ID on public profile", "Vis dit Jabber ID på din profil"
-
1
l.store "Your AIM id", "Dit AIM ID"
-
1
l.store "display AIM ID on public profile", "Vis dit AIM ID på din profil"
-
1
l.store "Your Twitter username", "Ditt Twitter-brukernavn"
-
1
l.store "display twitter on public profile", "Vis Twitter på din profil"
-
1
l.store "Tell us more about you", "Fortell litt mer om deg selv"
-
-
# app/views/admin/users/destroy.html.erb
-
1
l.store "Really delete user", "Vil du virkelig slette brukeren"
-
1
l.store "Yes", "Ja"
-
1
l.store "Users", "Brukere"
-
-
# app/views/admin/users/edit.html.erb
-
1
l.store "Edit User", "Rediger bruker"
-
-
# app/views/admin/users/index.html.erb
-
1
l.store "New User", "Ny bruker"
-
1
l.store "Comments", "Kommentarer"
-
1
l.store "State", "Tilstand"
-
1
l.store "%s user", "% bruker"
-
-
# app/views/admin/users/new.html.erb
-
1
l.store "Add User", "Legg til bruker"
-
-
# app/views/articles/_article.html.erb
-
1
l.store "Posted by", "Skrevet av"
-
-
# app/views/articles/_article_excerpt.html.erb
-
1
l.store "Continue reading", "Fortsett å lese"
-
-
# app/views/articles/_comment_failed.html.erb
-
1
l.store "Oops, something wrong happened, the comment could not be saved", "Ojsann, noe galt skjedde. Kommentaren ble ikke lagret"
-
-
# app/views/articles/_comment_form.html.erb
-
1
l.store "Your name", "Ditt navn"
-
1
l.store "Your email", "Din epost"
-
1
l.store "Your message", "Din beskjed"
-
1
l.store "Comment Markup Help", "Hjelp med markup for kommentar"
-
1
l.store "Preview comment", "Vis eksempel på kommentar"
-
1
l.store "leave url/email", "legg igjen URL/epost"
-
-
# app/views/articles/_comment_list.html.erb
-
1
l.store "No comments", "Ingen kommentarer"
-
-
# app/views/articles/archives.html.erb
-
1
l.store "No articles found", "Fant ingen artikler"
-
1
l.store "posted in", "postet i"
-
-
# app/views/articles/comment_preview.html.erb
-
1
l.store "is about to say", "vil snart si"
-
-
# app/views/articles/groupings.html.erb
-
1
l.store "There are", "Det er"
-
-
# app/views/articles/read.html.erb
-
1
l.store "Leave a response", "Skriv en kommentar"
-
1
l.store "Trackbacks", ""
-
1
l.store "Use the following link to trackback from your own site", "Bruk følgende lenke for å opprette trackback fra din egen side"
-
1
l.store "RSS feed for this post", "RSS-feed for denne artikkel"
-
1
l.store "trackback uri", "Trackback URI"
-
1
l.store "Comments are disabled", "Kommentarer er deaktiveret"
-
-
# app/views/authors/show.html.erb
-
1
l.store "Website:", "Hjemmeside:"
-
1
l.store "MSN:", ""
-
1
l.store "Yahoo:", ""
-
1
l.store "Jabber:", ""
-
1
l.store "AIM:", ""
-
1
l.store "Twitter:", ""
-
1
l.store "About %s", "Om %s"
-
1
l.store "This author has not published any article yet", "Forfatteren har ikke publisert noen artikler enda"
-
-
# app/views/comments/_comment.html.erb
-
1
l.store "said", "sa"
-
1
l.store "This comment has been flagged for moderator approval. It won't appear on this blog until the author approves it", "Denne kommentaren har blitt flagget for godkjenning av moderator. Den vil ikke bli vist på bloggen før moderatoren godkjenner den."
-
-
# app/views/comments/show.html.erb
-
1
l.store "This comment has been flagged for moderator approval.", "Denne kommentaren har blitt flagget for godkjenning av moderator."
-
-
# app/views/layouts/administration.html.erb
-
1
l.store "%s »", ""
-
1
l.store "is proudly powered by", "bruker med stolthet"
-
1
l.store "Dashboard", ""
-
-
# app/views/setup/index.html.erb
-
1
l.store "Welcome", "Velkommen"
-
1
l.store "Welcome to your %s blog setup. Just fill in your blog title and your email, and Typo will take care of everything else", "Velkommen til din %s bloggoppsett. Bare fyll inn bloggtittel og epostadressen din, så vil Typo ta seg av resten"
-
-
# app/views/shared/_confirm.html.erb
-
1
l.store "Congratulation!", "Gratulerer!"
-
1
l.store "You have successfully signed up", "Du er nå registrert"
-
1
l.store "<strong>Login:</strong> %s", "<strong>Logg inn:</strong> %s"
-
1
l.store "<strong>Password:</strong> %s", "<strong>Passord:</strong> %s"
-
1
l.store "Don't lose the mail sent at %s or you won't be able to login anymore", "Ikke mist eposten som ble sendt %s. Uten passordet vil du ikke kunne logge inn senere"
-
1
l.store "Proceed to %s", "Fortsett til %s"
-
1
l.store "admin", ""
-
-
# app/views/shared/_search.html.erb
-
1
l.store "Live Search", ""
-
-
# test/mocks/themes/typographic/layouts/default.html.erb
-
1
l.store "Powered by %s", "Bloggen bruker %s"
-
1
l.store "Designed by %s ", "Utformet av %s"
-
-
# test/mocks/themes/typographic/views/articles/_article.html.erb
-
1
l.store "Continue reading...", "Fortsett å lese..."
-
1
l.store "This entry was posted on %s", "Denne artikkelen ble publisert %s"
-
1
l.store "and %s", "og %s"
-
1
l.store "You can follow any response to this entry through the %s", "Du kan følge alle svar til denne artikkelen via %s"
-
1
l.store "Atom feed", ""
-
1
l.store "You can leave a %s", "Du kan legge igjen en %s"
-
1
l.store "or a %s from your own site", "eller en %s fra din egen hjemmeside"
-
1
l.store "Read full article", "Les hele artikkelen"
-
1
l.store "comment", "kommentar"
-
1
l.store "trackback", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment_form.html.erb
-
1
l.store "Leave a comment", "Skriv en kommentar"
-
1
l.store "Name %s", "Navn %s"
-
1
l.store "enabled", "aktivert"
-
1
l.store "never displayed", "aldri vist"
-
1
l.store "Website", "Hjemmeside"
-
1
l.store "Textile enabled", "Textile aktivert"
-
1
l.store "Markdown enabled", "Markdown aktivert"
-
1
l.store "required", "obligatorisk"
-
-
# test/mocks/themes/typographic/views/shared/_search.html.erb
-
1
l.store "Searching", "Søker"
-
-
# themes/dirtylicious/views/layouts/default.html.erb
-
1
l.store "Home", "Hjem"
-
1
l.store "About", "Om"
-
1
l.store "Designed by %s ported to typo by %s ", "Utformet av %s portert til Typo av %s "
-
-
# themes/scribbish/views/articles/_article.html.erb
-
1
l.store "Meta", ""
-
1
l.store "permalink", "permalenke"
-
-
# themes/scribbish/views/layouts/default.html.erb
-
1
l.store "styled with %s", "utformed med %s"
-
-
# themes/true-blue-3/helpers/theme_helper.rb
-
1
l.store "You are here: ", "Du er her: "
-
1
l.store "%d comment", "%d kommentar"
-
-
# themes/true-blue-3/views/articles/_article.html.erb
-
1
l.store "Published on", "Publisert den"
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M", ""
-
-
# themes/true-blue-3/views/articles/_comment_form.html.erb
-
1
l.store "Email address", "Epostadresse"
-
1
l.store "Your website", "Din hjemmeside"
-
-
# themes/true-blue-3/views/articles/read.html.erb
-
1
l.store "If you liked this article you can %s", "Hvis du likte denne artikkelen, kan du %s"
-
1
l.store "add me to Twitter", "legge meg til på Twitter"
-
1
l.store "Trackbacks for", "Trackbacks for"
-
-
# themes/true-blue-3/views/articles/search.html.erb
-
1
l.store "Search results for:", "Søkeresultater for:"
-
-
# themes/true-blue-3/views/categories/index.html.erb
-
1
l.store "Read all articles in %s", "Les alle artikler i %s"
-
-
# themes/true-blue-3/views/categories/show.html.erb
-
1
l.store "Previous", "Forrige"
-
1
l.store "Next", "Neste"
-
-
# vendor/plugins/archives_sidebar/app/views/archives_sidebar/_content.html.erb
-
1
l.store "Archives", "Arkiv"
-
-
# vendor/plugins/authors_sidebar/app/views/authors_sidebar/_content.html.erb
-
1
l.store "Authors", "Forfattere"
-
-
# vendor/plugins/meta_sidebar/app/views/meta_sidebar/_content.html.erb
-
1
l.store "RSS Feed", ""
-
1
l.store "Admin", ""
-
1
l.store "Powered by Typo", "Bloggen bruker Typo"
-
-
# vendor/plugins/xml_sidebar/app/views/xml_sidebar/_content.html.erb
-
1
l.store "Syndicate", "Syndikat"
-
1
l.store "Category %s", "Kategori %s"
-
1
l.store "Tag %s", ""
-
-
# Obsolete translations
-
1
l.store " made a link to you saying ", " har lenket til deg, og skrevet "
-
1
l.store "%d Categories", ["Kategori", "%d kategorier"]
-
1
l.store "%d Comments", "%d Kommentarer"
-
1
l.store "%d Users", ["bruker", "%d brukere"]
-
1
l.store "%d posts", "%d poster"
-
1
l.store ", Articles for ", ", Artikler for "
-
1
l.store "1 post", "1 post"
-
1
l.store "AIM Presence", "AIM Presence"
-
1
l.store "AIM Status", "AIM Status"
-
1
l.store "Action", "Handling"
-
1
l.store "Activate", "Aktiver"
-
1
l.store "Add MetaData", "Legg til metadata"
-
1
l.store "Add category", "Legg til kategori"
-
1
l.store "Add new user", "Legg til ny bruker"
-
1
l.store "Add pattern", "Legg til nytt mønster"
-
1
l.store "Allow non-ajax comments", "Tillat non-AJAX-kommentarer"
-
1
l.store "Archives for", "Arkiver for"
-
1
l.store "Archives for ", "Arkiver for "
-
1
l.store "Are you sure you want to delete this filter", "Er du sikker på du vil slette dette filter"
-
1
l.store "Are you sure you want to delete this item?", "Er du sikker på du vil slette dette mønsteret?"
-
1
l.store "Article Attachments", "Artikkelvedlegg"
-
1
l.store "Article Body", "artikkel"
-
1
l.store "Article Content", "artikkelinnhold"
-
1
l.store "Article Options", "artikkelegenskaper"
-
1
l.store "Articles in", "Artikler i"
-
1
l.store "Attachments", "Vedlegg"
-
1
l.store "Back to overview", "Tilbake til oversikten"
-
1
l.store "Back to tags list", "Tilbake til listen over tags"
-
1
l.store "Back to the blog", "Tilbage til bloggen"
-
1
l.store "Blacklist", "Svarteliste"
-
1
l.store "Blacklist Patterns", "Svartelistemønstre"
-
1
l.store "Blog settings", "Blogginnstillinger"
-
1
l.store "Body", "Tekst"
-
1
l.store "By %s on %s", "Fra %s på %s"
-
1
l.store "Category title", "Kategorititel"
-
1
l.store "Choose password", "Kodeord"
-
1
l.store "Comments and Trackbacks for", "Kommentarer og trackbacks for"
-
1
l.store "Comments for", "Kommentarer for"
-
1
l.store "Confirm password", "Gjenta passord"
-
1
l.store "Content Type was successfully updated.", "Innholdstype (Content Type) oppdatert"
-
1
l.store "Continue reading »", "Fortsett å lese »"
-
1
l.store "Copyright Information", "Åndsverksinformasjon"
-
1
l.store "Create new Blacklist", "opprett ny svarteliste"
-
1
l.store "Create new category", "opprett ny kategori"
-
1
l.store "Create new page", "opprett ny side"
-
1
l.store "Create new text filter", "opprett nytt tekstfilter"
-
1
l.store "Creating comment", "opprett kommentar"
-
1
l.store "Creating text filter", "Oppretter tekstfilter"
-
1
l.store "Creating trackback", "Oppretter trackback"
-
1
l.store "Creating user", "oppretter bruker"
-
1
l.store "Currently this article is listed in following categories", "Artikkelen er listet opp i følgende kategorier"
-
1
l.store "Customize Sidebar", "Tilpass sidebar"
-
1
l.store "Delete this filter", "Slett dette filteret"
-
1
l.store "Design", "Design"
-
1
l.store "Desired login", "Ønsket brukernavn"
-
1
l.store "Discuss", "Diskussion"
-
1
l.store "Display name", "Vis navn"
-
1
l.store "Do you want to go to your blog?", "Vil du fortsette til bloggen din?"
-
1
l.store "Duration", "Varighet"
-
1
l.store "Edit Article", "Rediger artikkel"
-
1
l.store "Edit MetaData", "Rediger metadata"
-
1
l.store "Edit this article", "Rediger denne artikkelen"
-
1
l.store "Edit this category", "Rediger denne kategorien"
-
1
l.store "Edit this filter", "Rediger dette filteret"
-
1
l.store "Edit this page", "Rediger denne siden"
-
1
l.store "Edit this trackback", "Rediger trackback"
-
1
l.store "Editing User", "Redigerer brukeren"
-
1
l.store "Editing category", "Redigerer kategorien"
-
1
l.store "Editing comment", "Redigerer kommentaren"
-
1
l.store "Editing page", "Redigerer siden"
-
1
l.store "Editing pattern", "Redigerer mønster"
-
1
l.store "Editing textfilter", "Redigerer tekstfilter"
-
1
l.store "Editing trackback", "Redigerer trackback"
-
1
l.store "Empty Fragment Cache", "Tøm Fragment Cache"
-
1
l.store "Enable gravatars", "Vis Gravatarer"
-
1
l.store "Error occurred while updating Content Type.", "En feil oppsto under oppdatering av innholdstype (Content Type)"
-
1
l.store "Explicit", "Eksplisitt"
-
1
l.store "Extended Content", "Utvidet innhold"
-
1
l.store "Feedback Search", "Søk i feedback"
-
1
l.store "Filters", "Filtre"
-
1
l.store "General Settings", "Generelle innstillinger"
-
1
l.store "Google verification link", "Verifiseringslenke for Google"
-
1
l.store "IP", "IP-adresse"
-
1
l.store "If you are reading this article elsewhere than", "Dersom du leser denne artikkelen et annet sted enn"
-
1
l.store "Images", "Bilder"
-
1
l.store "Index categories", "Indekskategorier"
-
1
l.store "Index tags", "Indekstagger"
-
1
l.store "Jabber", "Jabber"
-
1
l.store "Jabber account", "Jabber-konto"
-
1
l.store "Jabber account to use when sending Jabber notifications", "Jabber-konto som skal brukes når du sender Jabber-meldinger"
-
1
l.store "Jabber password", "Jabber passord"
-
1
l.store "Key Words", "Nøkkelord"
-
1
l.store "Last updated", "Sist oppdatert"
-
1
l.store "Latest posts", "Siste artikler"
-
1
l.store "Limit to unconfirmed", "Begrens til ubekreftede"
-
1
l.store "Limit to unconfirmed spam", "Begrens til ubekreftede Spam"
-
1
l.store "Location", "Sted"
-
1
l.store "Logoff", "Logg ut"
-
1
l.store "Macro Filter Help", "Hjelp med makrofilter"
-
1
l.store "Macros", "Makroer"
-
1
l.store "Manage", "Administrer"
-
1
l.store "Manage Articles", "Administrer artikler"
-
1
l.store "Manage Categories", "Administrer kategorier"
-
1
l.store "Manage Pages", "Administrer sider"
-
1
l.store "Manage Resources", "Administrer resurser"
-
1
l.store "Manage Text Filters", "Administrer tekstfiltre"
-
1
l.store "Markup", "Markup"
-
1
l.store "Markup type", "Markup type"
-
1
l.store "MetaData", "Metadata"
-
1
l.store "Name (required)", "Navn (obligatorisk)"
-
1
l.store "New Category", "Ny kategori"
-
1
l.store "Not published by Apple", "Ikke publisert av Apple"
-
1
l.store "Notification", "Beskjeder"
-
1
l.store "Notified", "Beskjed sendt"
-
1
l.store "Notify on new articles", "Send beskjed ved ny artikkel"
-
1
l.store "Notify on new comments", "Send beskjed ved ny kommentar"
-
1
l.store "Notify via email", "Send beskjed via epost"
-
1
l.store "Number of Articles", "Antall artikler"
-
1
l.store "Number of Comments", "antall kommentarer"
-
1
l.store "Offline", "Offline"
-
1
l.store "Older posts", "Eldre artikler"
-
1
l.store "Oops, something wrong happened. Have you filled out message and name?", "Ojsann, noe gikk galt. Har du fylt ut beskjed og navn?"
-
1
l.store "Optional Name", "Alternativt navn"
-
1
l.store "Original article writen by", "Opprinnelig artikkel skrevet av"
-
1
l.store "Page", "Side"
-
1
l.store "Page Body", "Sideinnhold"
-
1
l.store "Page Options", "Sideinstillinger"
-
1
l.store "Parameters", "Parametre"
-
1
l.store "Pattern", "Mønster"
-
1
l.store "Personal information", "Personlig information"
-
1
l.store "Pictures from", "Bilder fra"
-
1
l.store "Post title", "Tittel på artikkel"
-
1
l.store "Post-processing filters", "Etterbehandlingsfiltre"
-
1
l.store "Posted date", "Utgitt den"
-
1
l.store "Posted in", "Publisert i"
-
1
l.store "Posted on", "Publisert den"
-
1
l.store "Posts", "Artikler"
-
1
l.store "Preview Article", "Vis eksempel på artikkel"
-
1
l.store "Read", "Les"
-
1
l.store "Read more", "Les mer"
-
1
l.store "Rebuild cached HTML", "Gjenoppbygg HTML-cache"
-
1
l.store "Recent comments", "Nylige kommentarer"
-
1
l.store "Recent trackbacks", "Nylige trackbacks"
-
1
l.store "Regex", ""
-
1
l.store "Remove iTunes Metadata", "Slett iTunes Metadata"
-
1
l.store "Resource MetaData", "Resursmetadata"
-
1
l.store "Resource Settings", "Innstillinger for ressurser"
-
1
l.store "Save Settings", "Lagre innstillinger"
-
1
l.store "Says", "Sier"
-
1
l.store "Search Engine Optimisation", "Søkemotoroptimalisering"
-
1
l.store "Search Engine Optimization", "Søkemotoroptimalisering"
-
1
l.store "Search articles that contain ...", "Søk etter artikler som inneholder..."
-
1
l.store "See help text for this filter", "Se hjelpeteksten til dette filteret"
-
1
l.store "Set iTunes metadata for this enclosure", "Sett iTunes Metadata for denne filen"
-
1
l.store "Setting for channel", "Kanalinnstillinger"
-
1
l.store "Settings", "Innstillinger"
-
1
l.store "Show Help", "Vis hjelp"
-
1
l.store "Show full article on feed", "Vis hele artiklen i min feed"
-
1
l.store "Show this article", "Vis denne artikkelen"
-
1
l.store "Show this category", "Vis kategorien"
-
1
l.store "Show this comment", "Vis denne kommentaren"
-
1
l.store "Show this page", "Vis denne siden"
-
1
l.store "Show this pattern", "Vis dette mønsteret"
-
1
l.store "Show this user", "Vis denne brukeren"
-
1
l.store "Spam Protection", "Spam-beskyttelse"
-
1
l.store "Spam comments : %d", "Spam-kommentarer : %d"
-
1
l.store "Spam protection", "Spam-beskyttelse"
-
1
l.store "Statistics", "Statistikk"
-
1
l.store "String", "Tekststreng"
-
1
l.store "Subtitle", "Undertittel"
-
1
l.store "Summary", "Oppsummering"
-
1
l.store "System information", "Systeminformasjon"
-
1
l.store "Text Filter Details", "Tekstfilterdetaljer"
-
1
l.store "Text Filters", "Tekstfiltre"
-
1
l.store "Textfilter", "Textfilter"
-
1
l.store "The below settings act as defaults when you choose to publish an enclosure with iTunes metadata", "Innstillingene under er standard når du velger å publisere et vedlegg med iTunes metadata"
-
1
l.store "There are %d entries in the cache", "Det er %d objekter i cachen"
-
1
l.store "Things you can do", "Ting du kan gjøre"
-
1
l.store "This option let you choose between the simple admin interface or the complete one, displaying much more options and therefore more complicated to use. For advanced users only!", "Dette valget lar deg velge mellom et enkelt eller et komplett administrasjonsgrensesnitt. Det komplette viser mange flere valg og kan derfor være vanskeligere å bruke. Kun for avanserte brukere!"
-
1
l.store "Toggle Extended Content", "Flipp av/på utvidet innhold"
-
1
l.store "Total comments : %d", "Antall kommentarer : %d"
-
1
l.store "Total posts : %d", "Antall artikler : %d"
-
1
l.store "Type", "Type"
-
1
l.store "Typo admin", "Typo administrator"
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every category page, removing them from search engines and preventing duplicate content issues", "Avmerking av denne boksen vil legge til <code>noindex, follow</code> meta tags i hver kategoriside, som fjerner dem fra søkemotorer og motvirker problemer som skyldes duplisert innhold"
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every tags page, removing them from search engines and preventing duplicate content issues", "Avmerking av denne boksen vil legge til <code>noindex, follow</code> meta tags i hver tagsside, som fjerner dem fra søkemotorer og motvirker problemer som skyldes duplisert innhold"
-
1
l.store "Upload a new File", "Upload en ny fil"
-
1
l.store "Upload a new Resource", "Upload en ny ressource"
-
1
l.store "Uploaded", "Uploaded"
-
1
l.store "User's articles", "brukerens artikler"
-
1
l.store "View article on your blog", "Vis artikkel på din blog"
-
1
l.store "View comment on your blog", "Vis kommentar på din blog"
-
1
l.store "View page on your blog", "Vis denne side på din blog"
-
1
l.store "Which settings group would you like to edit", "Hvilke innstillinger vil du gerne redigere"
-
1
l.store "Write a Page", "Skriv en side"
-
1
l.store "Write an Article", "Skriv en artikkel"
-
1
l.store "XML Syndication", "XML Syndikat"
-
1
l.store "You are now logged out of the system", "Du er nu logget af systemet"
-
1
l.store "You can add it to the following categories", "Du kan tilføje følgende kategorier"
-
1
l.store "You can enable site wide feedback moderation. If you do so, no comment or trackback will appear on your blog unless you validate it", "Du kan slå feedback moderation til for hele bloggen. Hvis du gør dette kommer kommentarer og trackbacks først frem når du har godkendt dem"
-
1
l.store "You can optionally disable non-Ajax comments. Typo will always use Ajax for comment submission if Javascript is enabled, so non-Ajax comments are either from spammers or users without Javascript.", "Du kan valgfritt deaktivere non-AJAX-kommentarer. Typo vil alltid bruke AJAX for kommentarinnsending dersom Javascript er aktivert, slik at non-AJAX-kommentarer enten kommer fra brukere uten Javascript eller fra spammere.."
-
1
l.store "You need a permalink format with an identifier : %%month%%, %%year%%, %%day%%, %%title%%", "Du må ha et permalenkeformat med en identifikator : %%month%%, %%year%%, %%day%%, %%title%%"
-
1
l.store "Your posts : %d", "Dine artikler : %d"
-
1
l.store "add new", "legg til ny"
-
1
l.store "and published on", "og publisert den"
-
1
l.store "by", "av"
-
1
l.store "direct link to this article", "direktelenke til denne artikkelen"
-
1
l.store "everything about", "alt om"
-
1
l.store "it has been illegally reproduced and without proper authorization", "så har den blitt reprodusert uten tillatelse"
-
1
l.store "no posts", "ingen poster"
-
1
l.store "on", "på"
-
1
l.store "published", "utgitt"
-
1
l.store "seperate with spaces", "Adskill med mellomrom"
-
1
l.store "via email", "via e-mail"
-
1
l.store "with %s Famfamfam iconset %s", "med %s Famfamfam-ikoner %s"
-
1
l.store "later", "senere"
-
1
l.store "later:", "senere:"
-
1
l.store "log out", "logg ut"
-
end
-
# coding: utf-8
-
1
Localization.define("nl_NL") do |l|
-
# app/controllers/accounts_controller.rb
-
1
l.store "Login successful", "Login geslaagd"
-
1
l.store "Login unsuccessful", "Login mislukt"
-
1
l.store "An email has been successfully sent to your address with your new password", "Er is je met succes een e-mail gestuurd met uw nieuwe wachtwoord"
-
1
l.store "Oops, something wrong just happened", "Oeps, er is net iets misgegaan"
-
1
l.store "Successfully logged out", "Succesvol uitgelogd"
-
1
l.store "login", "inloggen"
-
1
l.store "signup", "aanmelden"
-
1
l.store "Recover your password", "Herstel uw wachtwoord"
-
-
# app/controllers/admin/categories_controller.rb
-
1
l.store "Category was successfully saved.", "Categorie succesvol opgeslagen."
-
1
l.store "Category could not be saved.", "Categorie kon niet opgeslagen worden."
-
-
# app/controllers/admin/content_controller.rb
-
1
l.store "Error, you are not allowed to perform this action", "Fout, je mag dit niet doen"
-
1
l.store "Preview", "Bekijk"
-
1
l.store "Article was successfully created", "Artikel is succesvol gemaakt"
-
1
l.store "Article was successfully updated.", "Artikel is succesvol bijgewerkt."
-
-
# app/controllers/admin/feedback_controller.rb
-
1
l.store "Deleted", "Verwijderd"
-
1
l.store "Not found", "Niet gevonden"
-
1
l.store "Deleted %d item(s)", "%d items verwijderd"
-
1
l.store "Marked %d item(s) as Ham", "%d Item(s) gemarkeerd als Ham"
-
1
l.store "Marked %d item(s) as Spam", "%d Item(s) gemarkeerd als Spam"
-
1
l.store "Confirmed classification of %s item(s)", "Classificatie van %s item(s) bevestigd"
-
1
l.store "Not implemented", "Niet geimplementeerd"
-
1
l.store "All spam have been deleted", "Alle spam is verwijderd"
-
1
l.store "Comment was successfully created.", "Commentaar is succesvol aangemaakt."
-
1
l.store "Comment was successfully updated.", "Commentaar is succesvol bijgewerkt."
-
-
# app/controllers/admin/pages_controller.rb
-
1
l.store "Page was successfully created.", "Pagina is succesvol aangemaakt."
-
1
l.store "Page was successfully updated.", "Pagina is succesvol bijgewerkt."
-
-
# app/controllers/admin/profiles_controller.rb
-
1
l.store "User was successfully updated.", "Gebruiker is succesvol bijgewerkt."
-
-
# app/controllers/admin/resources_controller.rb
-
1
l.store "Error occurred while updating Content Type.", "Er trad een fout op bij het bijwerken van het Content Type"
-
1
l.store "complete", "compleet"
-
1
l.store "File uploaded: ", "Bestand geupload"
-
1
l.store "Unable to upload", "Kon niet uploaden"
-
1
l.store "Metadata was successfully updated.", "Metadata werden succesvol bijgewerkt"
-
1
l.store "Not all metadata was defined correctly.", "Niet alle metadata waren correct gedefinieerd"
-
1
l.store "Content Type was successfully updated.", "Content Type was succesvol bijgewerkt"
-
-
# app/controllers/admin/settings_controller.rb
-
1
l.store "Please review and save the settings before continuing", "Controleer de instellingen en sla ze op voor je verder gaat"
-
1
l.store "config updated.", "configuratie bijgewerkt"
-
-
# app/controllers/admin/sidebar_controller.rb
-
1
l.store "It seems something went wrong. Maybe some of your sidebars are actually missing and you should either reinstall them or remove them manually", "Het lijkt er op dat er iets fout ging. Misschien ontbreken sommige zijbalken en moet je ze opnieuw installeren of handmatig verwijderen"
-
-
# app/controllers/admin/tags_controller.rb
-
1
l.store "Tag was successfully updated.", "Tag was succesvol bijgewerkt."
-
-
# app/controllers/admin/themes_controller.rb
-
1
l.store "Theme changed successfully", "Thema succesvol aangepast"
-
1
l.store "You are not authorized to open this file", "U bent niet geautoriseerd om dit bestand te openen"
-
1
l.store "File saved successfully", "Bestand succesvol opgeslagen"
-
1
l.store "Unable to write file", "Kon het bestand niet schrijven"
-
-
# app/controllers/admin/users_controller.rb
-
1
l.store "User was successfully created.", "Gebruiker succesvol aangemaakt."
-
-
# app/controllers/application_controller.rb
-
1
l.store "Localization.rtl", ""
-
-
# app/controllers/articles_controller.rb
-
1
l.store "No posts found...", "Geen berichten gevonden..."
-
1
l.store "Archives for", "Archieven voor"
-
1
l.store "Archives for ", "Archieven voor "
-
1
l.store ", Articles for ", ", Berichten voor "
-
-
# app/controllers/grouping_controller.rb
-
1
l.store "page", "pagina"
-
1
l.store "everything about", "alles over"
-
-
# app/helpers/admin/base_helper.rb
-
1
l.store "Cancel", "Terug"
-
1
l.store "Store", "Opslaan"
-
1
l.store "Delete", "Verwijderen"
-
1
l.store "delete", "verwijderen"
-
1
l.store "Delete content", "Verwijder inhoud"
-
1
l.store "Are you sure?", "Weet je het zeker?"
-
1
l.store "Please select", "Selecteren alstublieft"
-
1
l.store "There are no %s yet. Why don't you start and create one?", "Er zijn nog geen %s. Waarom begin je er niet een te maken?"
-
1
l.store "or", "of"
-
1
l.store "Save", "Bewaar"
-
1
l.store "Edit", "Bewerken"
-
1
l.store "Show", "Tonen"
-
1
l.store "Published", "Gepubliceerd"
-
1
l.store "Unpublished", "Niet gepubliceerd"
-
1
l.store "Show help on Typo macros", "Toon help voor Typo macro's"
-
1
l.store "Back to overview", "Terug naar overzicht"
-
1
l.store "Name", "Naam"
-
1
l.store "Description", "Omschrijving"
-
1
l.store "Tag", "Tag"
-
-
# app/helpers/admin/categories_helper.rb
-
1
l.store "no articles", "geen artikelen"
-
1
l.store "1 article", "1 artikel"
-
1
l.store "%d articles", "%d artikelen"
-
-
# app/helpers/admin/content_helper.rb
-
1
l.store "Destroy this draft", "Verwijder dit concept"
-
-
# app/helpers/admin/feedback_helper.rb
-
1
l.store "Show conversation", "Toon conversatie"
-
1
l.store "Flag as %s", "Markeer als %s"
-
-
# app/helpers/application_helper.rb
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M:%%S GMT", "%%a, %%d %%b %%Y %%H:%%M:%%S GMT"
-
1
l.store "%%d. %%b", "%%d. %%b"
-
1
l.store "%d comments", "%d reacties"
-
1
l.store "no comments", "geen reacties"
-
1
l.store "1 comment", "één reactie"
-
1
l.store "no trackbacks", "geen trackbacks"
-
1
l.store "1 trackback", "één trackback"
-
1
l.store "%d trackbacks", "%d trackbacks"
-
-
# app/helpers/content_helper.rb
-
1
l.store "Posted in", "Geplaatst in"
-
1
l.store "Tags", "Trefwoorden"
-
1
l.store "no posts", "geen berichten"
-
1
l.store "1 post", "één bericht"
-
1
l.store "%d posts", "%d berichten"
-
-
# app/models/article.rb
-
1
l.store "Original article writen by", "Origineel artikel geschreven door"
-
1
l.store "and published on", "en gepubliceerd op"
-
1
l.store "direct link to this article", "directe link naar dit arikel"
-
1
l.store "If you are reading this article elsewhere than", "Als je dit artikel ergens anders leest dan"
-
1
l.store "it has been illegally reproduced and without proper authorization", "is het illegaal en zonder de juiste toestemming gekopieerd"
-
-
# app/models/blog.rb
-
1
l.store "You need a permalink format with an identifier : %%month%%, %%year%%, %%day%%, %%title%%", "Je hebt een permalink formaat nodig met een identifier: %%month%%, %%year%%, %%day%%, %%title%%"
-
1
l.store "Can't end in .rss or .atom. These are reserved to be used for feed URLs", "Mag niet eindigen met .rss of .atom. Die zijn gereserveerd voor feed URLs"
-
-
# app/models/feedback/states.rb
-
1
l.store "Unclassified", "Niet geclassificeerd"
-
1
l.store "Just Presumed Ham", "Zojuist aangenomen dat dit Ham is"
-
1
l.store "Ham?", "Ham?"
-
1
l.store "Just Marked As Ham", "Zojuist gemarkeerd als Ham"
-
1
l.store "Ham", "Ham"
-
1
l.store "Spam?", "Spam?"
-
1
l.store "Just Marked As Spam", "Zojuist gemarkeerd als Spam"
-
1
l.store "Spam", "Spam"
-
-
# app/views/accounts/login.html.erb
-
1
l.store "I've lost my password", "Ik ben mijn wachtwoord kwijt"
-
1
l.store "Login", "Log in"
-
1
l.store "Password", "Wachtwoord"
-
1
l.store "Remember me", "Onthoud me"
-
1
l.store "Submit", "Verstuur"
-
1
l.store "Back to ", "Terug naar"
-
-
# app/views/accounts/recover_password.html.erb
-
1
l.store "Username or email", "Gebruikersnaam of e-mail"
-
-
# app/views/accounts/signup.html.erb
-
1
l.store "Create an account", "Maak een account aan"
-
1
l.store "Username", "Gebruikersnaam"
-
1
l.store "Email", "E-mail"
-
1
l.store "Signup", "Meld aan"
-
-
# app/views/admin/categories/_categories.html.erb
-
1
l.store "Title", "Titel"
-
1
l.store "Reorder", "Orden opnieuw"
-
1
l.store "Sort alphabetically", "Sorteer alfabetisch"
-
-
# app/views/admin/categories/_form.html.erb
-
1
l.store "Keywords", "Trefwoorden"
-
-
# app/views/admin/categories/destroy.html.erb
-
1
l.store "Are you sure you want to delete the category ", "Weet je zeker dat je de categorie wilt verwijderen?"
-
1
l.store "Delete this category", "Verwijder deze categorie"
-
1
l.store "Categories", "Categoriën"
-
-
# app/views/admin/categories/index.html.erb
-
1
l.store "New Category", "Nieuwe categorie"
-
-
# app/views/admin/categories/new.html.erb
-
1
l.store "%s Category", "%s Categorie"
-
-
# app/views/admin/categories/reorder.html.erb
-
1
l.store "(Done)", "(Gedaan)"
-
-
# app/views/admin/content/_attachment.html.erb
-
1
l.store "Remove", "Verwijder"
-
1
l.store "Currently this article has the following resources", "Momenteel heeft dit artikel de volgende bronnen"
-
1
l.store "You can associate the following resources", "Je kunt de volgende bronnen koppelen"
-
1
l.store "Really delete attachment", "Bijlage echt verwijderen"
-
1
l.store "Add Another Attachment", "Voeg een andere bijlage toe"
-
-
# app/views/admin/content/_drafts.html.erb
-
1
l.store "Drafts", "Concepten"
-
-
# app/views/admin/content/_form.html.erb
-
1
l.store "Publish settings", "Publicatie instellingen"
-
1
l.store "Allow comments", "Sta reacties toe"
-
1
l.store "Allow trackbacks", "Sta trackbacks toe"
-
1
l.store "Password:", "Wachtwoord:"
-
1
l.store "Publish", "Publiceer"
-
1
l.store "Excerpt", "Uittreksel"
-
1
l.store "Excerpts are posts summaries that are shown on your blog homepage only but won’t appear on the post itself", "Uittreksels zijn een samenvatting van een post die alleen op de homepage staat, maar niet in de post zelf staan"
-
1
l.store "Uploads", "Uploads"
-
1
l.store "Post settings", "Post instellingen"
-
1
l.store "Publish at", "Publiceren op"
-
1
l.store "Permalink", "Permalink"
-
1
l.store "Article filter", "Artikel filter"
-
1
l.store "Save as draft", "Opslaan als concept"
-
-
# app/views/admin/content/destroy.html.erb
-
1
l.store "Are you sure you want to delete this article", "Weet je zeker dat je dit artikel wilt verwijderen?"
-
1
l.store "Delete this article", "Verwijder dit artikel"
-
1
l.store "Articles", "Artikelen"
-
-
# app/views/admin/content/index.html.erb
-
1
l.store "New Article", "Nieuw artikel"
-
1
l.store "Search articles that contain ...", "Zoek artikelen met ..."
-
1
l.store "Search", "Zoek"
-
1
l.store "Author", "Auteur"
-
1
l.store "Date", "Datum"
-
1
l.store "Feedback", "Feedback"
-
1
l.store "Filter", "Filter"
-
1
l.store "Manage articles", "Beheer artikelen"
-
-
# app/views/admin/dashboard/_comments.html.erb
-
1
l.store "Latest Comments", "Laatste reacties"
-
1
l.store "No comments yet", "Nog geen reacties"
-
1
l.store "By %s on %s", "door %s op %s"
-
-
# app/views/admin/dashboard/_inbound.html.erb
-
1
l.store "Inbound links", "Binnenkomende links"
-
1
l.store "No one made a link to you yet", "Niemand maakte nog een link naar je"
-
1
l.store " made a link to you saying ", " maakte een link naar je met als tekst "
-
1
l.store "You have no internet connection", "Je hebt geen internetverbinding"
-
-
# app/views/admin/dashboard/_overview.html.erb
-
1
l.store "This place gives you a quick overview of what happens on your Typo blog and what you can do. Maybe will you want to %s, %s or %s.", "Deze pagina geeft je een snel overzicht van wat er gebeurt op je Type blog en wat je doen kunt. Misschien wil je %s, %s of %s"
-
1
l.store "update your profile or change your password", "je profiel bijwerken of je wachtwoord wijzigen"
-
1
l.store "You can also do a bit of design, %s or %s.", "Je kunt ook wat design doen, %s of %s"
-
1
l.store "change your blog presentation", "je blog presentatie aanpassen"
-
1
l.store "enable plugins", "plugins instellen"
-
1
l.store "write a post", "een post schrijven"
-
1
l.store "write a page", "een pagina schrijven"
-
-
# app/views/admin/dashboard/_popular.html.erb
-
1
l.store "Most popular", "Meest populair"
-
1
l.store "Nothing to show yet", "Nog niets te zien"
-
-
# app/views/admin/dashboard/_posts.html.erb
-
1
l.store "Latest Posts", "Laatste berichten"
-
1
l.store "No posts yet, why don't you start and write one", "Nog geen berichten, waarom begin je er niet een te schrijven"
-
-
# app/views/admin/dashboard/_typo_dev.html.erb
-
1
l.store "Latest news from the Typo development blog", "Laatste neiuws van het Typo ontwikkel blog"
-
1
l.store "Oh no, nothing new", "Oh nee, geen nieuws"
-
-
# app/views/admin/dashboard/_welcome.html.erb
-
1
l.store "Welcome back, %s!", "Welkom terug, %s!"
-
1
l.store "%d articles and %d comments were posted since your last connexion", "%d artikels en %d commentaren zijn geplaatst sinds je laatste bezoek"
-
1
l.store "You're running Typo %s", "Je gebruikt Typo %s"
-
1
l.store "Total posts : %d", "Aantal berichten : %d"
-
1
l.store "Your posts : %d", "Jouw berichten : %d"
-
1
l.store "Total comments : %d", "Aantal reacties : %d"
-
1
l.store "Spam comments : %d", "Spam reacties : %d"
-
-
# app/views/admin/feedback/_button.html.erb
-
1
l.store "Select action", "Kies actie"
-
1
l.store "Delete Checked Items", "Verwijder aangevinkte reacties"
-
1
l.store "Delete all spam", "Verwijder alle spam"
-
1
l.store "Mark Checked Items as Spam", "Markeer aangevinkte reacties als Spam"
-
1
l.store "Mark Checked Items as Ham", "Markeer aangevinkte reacties als Ham"
-
1
l.store "All comments", "Alle commentaren"
-
1
l.store "Limit to ham", "Alleen ham"
-
1
l.store "Unapproved comments", "Niet goedgekeurde"
-
1
l.store "Limit to spam", "Alleen spam"
-
-
# app/views/admin/feedback/_form.html.erb
-
1
l.store "Add a comment", "Voeg een commentaar toe"
-
1
l.store "Url", "Url"
-
-
# app/views/admin/feedback/_spam.html.erb
-
1
l.store "This comment by <strong>%s</strong> was flagged as spam, %s?", "Dit commentaar van <strong>%s</strong> was gemarkeerd als spam, %s?"
-
-
# app/views/admin/feedback/article.html.erb
-
1
l.store "Comments for %s", "Commentaren voor %s"
-
1
l.store "Status", "Status"
-
1
l.store "Comment Author", "Auteur commentaar"
-
1
l.store "Comment", "Reactie"
-
-
# app/views/admin/feedback/edit.html.erb
-
1
l.store "Comments for", "Commentaren voor"
-
-
# app/views/admin/feedback/index.html.erb
-
1
l.store "Search Comments and Trackbacks that contain", "Zoek commentaren en trackbacks die bevatten"
-
1
l.store "Article", "Artikel"
-
-
# app/views/admin/pages/_form.html.erb
-
1
l.store "Online", "Online"
-
1
l.store "Page settings", "Pagina instellingen"
-
1
l.store "Permanent link", "Permanente link"
-
-
# app/views/admin/pages/destroy.html.erb
-
1
l.store "Pages", "Pagina's"
-
1
l.store "Are you sure you want to delete the page", "Weet je zeker dat je deze pagina wilt verwijderen"
-
1
l.store "Delete this page", "Verwijder deze pagina"
-
-
# app/views/admin/pages/index.html.erb
-
1
l.store "New Page", "Nieuwe pagina"
-
1
l.store "Manage pages", "Beheer pagina's"
-
-
# app/views/admin/profiles/index.html.erb
-
1
l.store "Your profile", "Je profiel"
-
-
# app/views/admin/resources/_mime_edit.html.erb
-
1
l.store "Content Type", "Content Type"
-
-
# app/views/admin/resources/_pages.html.erb
-
1
l.store "Previous page", "Vorige pagina"
-
1
l.store "Next page", "Volgende pagina"
-
-
# app/views/admin/resources/_upload.html.erb
-
1
l.store "Upload a File to your Site", "Upload een bestand naar je site"
-
1
l.store "File", "Bestand"
-
1
l.store "Upload", "Upload"
-
-
# app/views/admin/resources/destroy.html.erb
-
1
l.store "Are you sure you want to delete this file", "Weet je zeker dat je dit bestand wilt verwijderen?"
-
1
l.store "Delete this file from the webserver?", "Verwijder dit bestand van de webserver?"
-
1
l.store "File Uploads", "Bestand Uploads"
-
-
# app/views/admin/resources/images.html.erb
-
1
l.store "Thumbnail", "Voorafbeelding"
-
1
l.store "File Size", "Bestandsgrootte"
-
1
l.store "Images", "Afbeeldingen"
-
1
l.store "right-click for link", "rechts-klikken voor link"
-
-
# app/views/admin/resources/index.html.erb
-
1
l.store "Filename", "Bestandsnaam"
-
-
# app/views/admin/settings/_submit.html.erb
-
1
l.store "Update settings", "Werk instellingen bij"
-
-
# app/views/admin/settings/feedback.html.erb
-
1
l.store "Enable comments by default", "Commentaren standaard toestaan"
-
1
l.store "Enable Trackbacks by default", "Trackbacks standaard toestaan"
-
1
l.store "Enable feedback moderation", "Feedback controle aanzetten"
-
1
l.store "You can enable site wide feeback moderation. If you do so, no comment or trackback will appear on your blog unless you validate it", "Je kunt voor de hele site feedback controle aanzetten. Als je dat doet zal geen enkel commentaar of trackback op je blog verschijnen totdat je het goedkeurt"
-
1
l.store "Comments filter", "Commentaren filter"
-
1
l.store "Enable gravatars", "Enable gravatars"
-
1
l.store "Show your email address", "Toon je e-mail adres"
-
1
l.store "Notifications", "Notificaties"
-
1
l.store "Typo can notify you when new articles or comments are posted", "Typo can je notificeren wanneer nieuwe artikelen of commentaren gepost worden"
-
1
l.store "Source Email", "Bron e-mail"
-
1
l.store "Email address used by Typo to send notifications", "E-mail adres dat Typo gebruikt om notificaties te versturen"
-
1
l.store "Enabling spam protection will make typo compare the IP address of posters as well as the contents of their posts against local and remote blacklists. Good defense against spam bots", "Het aanzetten van spambescherming zorgt dat typo het IP-adres en de inhoud van reacties vergelijkt met lokale en centrale zwarte lijsten. Een goede bescherming tegen spam robots"
-
1
l.store "Enable spam protection", "Gebruik spam-bescherming"
-
1
l.store "Akismet Key", "Akismet sleutel"
-
1
l.store "Typo can (optionally) use the %s spam-filtering service. You need to register with Akismet and receive an API key before you can use their service. If you have an Akismet key, enter it here", "Typo kan (optioneel) de %s spam-filter dienst gebruiken. Je moet een registratie bij Akismet hebben en een API sleutel voordat je deze dienst kunt gebruiken. Als je een Akismet sleutel hebt, vul die dan hier in"
-
1
l.store "Disable trackbacks site-wide", "Gebruik nergens trackbacks"
-
1
l.store "This setting allows you to disable trackbacks for every article in your blog. It won't remove existing trackbacks, but it will prevent any further attempt to add a trackback anywhere on your blog.", "Deze instelling zorgt er voor dat bij geen enkel artikel in je blog trackbacks gebruikt kunnen worden. Het zal bestaande trackbacks niet verwijderen, maar het zal voorkomen dat nieuwe trackbacks worden toegevoegd."
-
1
l.store "Disable comments after", "Sta commentaren niet toe na"
-
1
l.store "days", "dagen"
-
1
l.store "Set to 0 to never disable comments", "Zet op 0 om commentaren altijd toe te staan"
-
1
l.store "Max Links", "Max links"
-
1
l.store "Typo will automatically reject comments and trackbacks which contain over a certain amount of links in them", "Typo zal automatisch commentaren en trackbacks verwijderen die meer dan een bepaald aantal links bevatten"
-
1
l.store "Set to 0 to never reject comments", "Zet op 0 om commentaren nooit te weigeren"
-
1
l.store "Feedback settings", ""
-
-
# app/views/admin/settings/index.html.erb
-
1
l.store "Your blog", "Je blog"
-
1
l.store "Blog name", "Blog naam"
-
1
l.store "Blog subtitle", "Blog ondertitel"
-
1
l.store "Blog URL", "Blog URL"
-
1
l.store "Language", "Taal"
-
1
l.store "Allow users to register", "Sta gebruikers toe zich te registreren"
-
1
l.store "You can allow users to register to your blog. By default, they will register as contributors, an unpriviledged account level which grant them no rights but own a profile on the site. If you don't want users to register, you can thus add them by yourself in the users part of this admin.", "Je kunt gebruikers toestaan zich te registreren bij je blog. Standaard zullen ze contributors worden, een soort account zonder rechten behalve het hebben van een profiel op de site. Als je niet wilt dat gebruikers zich registreren kun je ze altijd zelf toevoegen in het gebruikers deel."
-
1
l.store "Items to display in admin lists", ""
-
1
l.store "Publishing options", "Publicatie opties"
-
1
l.store "Display", "Toon"
-
1
l.store "articles on my homepage by default", "artikelen op mijn startpagina"
-
1
l.store "articles in my news feed by default", "artikelen in mijn news feed"
-
1
l.store "Show full article on feed", "Toon volledig artikel in feed"
-
1
l.store "Feedburner ID", "Feedburner ID"
-
1
l.store "General settings", "Algemene instellingen"
-
1
l.store "You can use your Google Feedburner account instead of Typo feed URL. To enable this, fill this form with your Feedburner ID.", "Je kunt je Google Feedburner account gebruiken in plaats van de Typo feed URL. Vul daartoe in dit formulier je Feedburner ID in."
-
-
# app/views/admin/settings/seo.html.erb
-
1
l.store "Search Engine Optimisation", "Zoekmachine optimalisatie"
-
1
l.store "Format of permalink", "Formaat van permalink"
-
1
l.store "Google Analytics", "Google Analytics"
-
1
l.store "Google verification link", "Google verification link"
-
1
l.store "Meta description", "Meta-beschrijving"
-
1
l.store "Meta keywords", "Meta-kewords"
-
1
l.store "Use RSS description", "Gebruik RSS beschrijving"
-
1
l.store "Index categories", ""
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every category page, removing them from search engines and preventing duplicate content issues", "Het uitzetten van dit vinkje zal de meta-tags <code>noindex, follow</code> toevoegen aan elke categorie pagina, zodat die niet door zoekmachines geïndexeerd wordt; dit voorkomt dubbele hits"
-
1
l.store "Index tags", ""
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every tags page, removing them from search engines and preventing duplicate content issues", "Het uitzetten van dit vinkje zal de meta-tags <code>noindex, follow</code> toevoegen aan elke tag pagina, zodat die niet door zoekmachines geïndexeerd wordt; dit voorkomt dubbele hits"
-
1
l.store "Robots.txt", "Robots.txt"
-
1
l.store "You robots.txt file is not writeable. Typo won't be able to write it", "Je robots.txt bestand is niet schrijfbaar. Typo kan het niet wijzigen"
-
1
l.store "Search Engine Optimization", "Zoekmachine optimalisatie"
-
1
l.store "This will display", "Dit zorgt er voor dat "
-
1
l.store "at the bottom of each of your post in the RSS feed", " onderaan elke post in je RSS-feed verschijnt"
-
-
# app/views/admin/settings/update_database.html.erb
-
1
l.store "Information", "Informatie"
-
1
l.store "Current database version", "Huidige database versie"
-
1
l.store "New database version", "Nieuwe database versie"
-
1
l.store "Your database supports migrations", "Je database ondersteunt migraties"
-
1
l.store "Needed migrations", "Benodigde migraties"
-
1
l.store "You are up to date!", "Je bent bij de tijd!"
-
1
l.store "Update database now", "Werk database nu bij"
-
1
l.store "may take a moment", "kan even duren"
-
1
l.store "Database migration", "Database migratie"
-
1
l.store "yes", "ja"
-
1
l.store "no", "nee"
-
-
# app/views/admin/settings/write.html.erb
-
1
l.store "Send trackbacks", "Verstuur trackbacks"
-
1
l.store "When publishing articles, Typo can send trackbacks to websites that you link to. This should be disabled for private blogs as it will leak non-public information to sites that you're discussing. For public blogs, there's no real point in disabling this.", "Wanneer je een artikel publiceert kan Typo een trackback sturen naar de sites waaraan je linkt. Dit zou voor privé-blogs uit moeten staan, omdat het niet-publieke informatie 'lekt' naar sites die je bediscussieert. Voor publieke blogs is er geen goede reden om het uit te zetten."
-
1
l.store "URLs to ping automatically", ""
-
1
l.store "Latitude, Longitude", ""
-
1
l.store "your lattitude and longitude", ""
-
1
l.store "exemple", ""
-
1
l.store "Write", "Schrijf"
-
-
# app/views/admin/sidebar/_publish.html.erb
-
1
l.store "Changes published", "Wijzigingen gepubliceerd"
-
-
# app/views/admin/sidebar/_target.html.erb
-
1
l.store "Drag some plugins here to fill your sidebar", "Sleep wat plugins naar hier om de zijbalk te vullen"
-
-
# app/views/admin/sidebar/index.html.erb
-
1
l.store "Drag and drop to change the sidebar items displayed on this blog. To remove items from the sidebar just click remove Changes are saved immediately, but not activated until you click the 'Publish' button", "Sleep dingen heen en weer om de zijbalk van dit blog aan te passen. Om dingen te verwijderen klik je op verwijderen Wijzigen worden automatisch opgeslagen, maar niet geactiveerd totdat je de 'Publiceer' knop klikt"
-
1
l.store "Available Items", "Beschikbare dingen"
-
1
l.store "You have no plugins installed", "Je hebt geen plugins geïinstalleerd"
-
1
l.store "Active Sidebar items", "Actieve zijbalk dingen"
-
1
l.store "Get more plugins", "Haal meer thema's op"
-
1
l.store "Sidebar", "Zijbalk"
-
1
l.store "Publish changes", "Publiceer wijzigingen"
-
-
# app/views/admin/tags/_form.html.erb
-
1
l.store "Display name", "Schermnaam"
-
-
# app/views/admin/tags/destroy.html.erb
-
1
l.store "Are you sure you want to delete the tag", "Weet je zeker dat je deze tag wilt verwijderen?"
-
1
l.store "Delete this tag", "Verwijder deze tag"
-
-
# app/views/admin/tags/edit.html.erb
-
1
l.store "Editing ", "Wijzigen"
-
1
l.store "Back to tags list", "Terug naar de lijst van tags"
-
-
# app/views/admin/tags/index.html.erb
-
1
l.store "Display Name", ""
-
1
l.store "Manage tags", "Beheer tags"
-
-
# app/views/admin/themes/catalogue.html.erb
-
1
l.store "Sorry the theme catalogue is not available", "Sorry, de thema catalogus is niet beschikbaar"
-
1
l.store "Theme catalogue", "Thema catalogus"
-
-
# app/views/admin/themes/editor.html.erb
-
1
l.store "Theme editor", "Thema editor"
-
-
# app/views/admin/themes/index.html.erb
-
1
l.store "Active theme", "Actieve thema's"
-
1
l.store "Get more themes", "Haal meer thema's op"
-
1
l.store "You can download third party themes from officially supported %s ", "Je kunt thema's van derden downloaden van officieel ondersteunde %s "
-
1
l.store "Typogarden", "Typogarden"
-
1
l.store "To install a theme you just need to upload the theme folder into your themes directory. Once a theme is uploaded, you should see it on this page.", "Om een thema te installeren moet je het uploaden in de themes map. Zodra het is geupload zou je het op deze pagina moeten zien."
-
1
l.store "Choose a theme", "Kies een thema"
-
-
# app/views/admin/users/_form.html.erb
-
1
l.store "Account settings", "Account instellingen"
-
1
l.store "Password confirmation", "Bevestig wachtwoord"
-
1
l.store "Profile", "Profiel"
-
1
l.store "User's status", "Status van de gebruiker"
-
1
l.store "Active", "Actief"
-
1
l.store "Inactive", "Inactief"
-
1
l.store "Profile Settings", "Profiel instellingen"
-
1
l.store "Firstname", "Voornaam"
-
1
l.store "Lastname", "Achternaam"
-
1
l.store "Nickname", "Bijnaam"
-
1
l.store "Editor", "Editor"
-
1
l.store "Use simple editor", "Gebruik de simpele editor"
-
1
l.store "Use visual rich editor", "Gebruik de visuele editor"
-
1
l.store "Send notification messages via email", "Zend notificaties via e-mail"
-
1
l.store "Send notification messages when new articles are posted", "Zend notificaties wanneer nieuwe artikelen worden gepubliceerd"
-
1
l.store "Send notification messages when comments are posted", "Zend notificaties wanneer commentaren geplaatst worden"
-
1
l.store "Contact Options", "Contact opties"
-
1
l.store "Your site", "Je site"
-
1
l.store "display url on public profile", "toon URL op publiek profiel"
-
1
l.store "Your MSN", "Je msn"
-
1
l.store "display MSN ID on public profile", "toon MSN op publiek profiel"
-
1
l.store "Your Yahoo ID", "Je Yahoo ID"
-
1
l.store "display Yahoo! ID on public profile", "toon Yahoo! ID op publiek profiel"
-
1
l.store "Your Jabber ID", "Je Jabber ID"
-
1
l.store "display Jabber ID on public profile", "toon Jabber ID op publiek profiel"
-
1
l.store "Your AIM id", "Je AIM id"
-
1
l.store "display AIM ID on public profile", "toon AIM ID op publiek profiel"
-
1
l.store "Your Twitter username", "Je Twitter gebruikersnaam"
-
1
l.store "display twitter on public profile", "toon twitter op publiek profiel"
-
1
l.store "Tell us more about you", "Vertel ons meer over jezelf"
-
-
# app/views/admin/users/destroy.html.erb
-
1
l.store "Really delete user", "Gebruiker echt verwijderen"
-
1
l.store "Yes", "Ja"
-
1
l.store "Users", "Gebruikers"
-
-
# app/views/admin/users/edit.html.erb
-
1
l.store "Edit User", "Gebruiker wijzigen"
-
-
# app/views/admin/users/index.html.erb
-
1
l.store "New User", "Nieuwe gebruikers"
-
1
l.store "Comments", "Reacties"
-
1
l.store "State", "Status"
-
1
l.store "%s user", "%s gebruiker"
-
-
# app/views/admin/users/new.html.erb
-
1
l.store "Add User", "Gebruiker toevoegen"
-
-
# app/views/articles/_article.html.erb
-
1
l.store "Posted by", "Geplaatst door"
-
1
l.store "Continue reading", "Verder lezen"
-
-
# app/views/articles/_comment.html.erb
-
1
l.store "said", "zei"
-
1
l.store "This comment has been flagged for moderator approval. It won't appear on this blog until the author approves it", "Dit commentaar is gemarkeerd voor goedkeuring. Het zal niet getoond worden totdat de auteur het goedkeurt."
-
-
# app/views/articles/_comment_box.html.erb
-
1
l.store "Your name", "Jouw naam"
-
1
l.store "Your email", "Jouw e-mail"
-
1
l.store "Your message", "Jouw bericht"
-
1
l.store "Comment Markup Help", ""
-
1
l.store "Preview comment", "Bekijk reactie"
-
1
l.store "leave url/email", "plaats url/e-mail"
-
-
# app/views/articles/_comment_failed.html.erb
-
1
l.store "Oops, something wrong happened, the comment could not be saved", "Er is iets mis gegaan en je reactie is niet bewaard"
-
-
# app/views/articles/_trackback.html.erb
-
1
l.store "From", "Van"
-
-
# app/views/articles/archives.html.erb
-
1
l.store "No articles found", "Geen artikelen gevonden"
-
1
l.store "posted in", "geplaatst in"
-
-
# app/views/articles/comment_preview.html.erb
-
1
l.store "is about to say", "gaat zeggen"
-
-
# app/views/articles/groupings.html.erb
-
1
l.store "There are", "Er zijn"
-
-
# app/views/articles/read.html.erb
-
1
l.store "Leave a response", "Geef een reactie"
-
1
l.store "Trackbacks", "Trackbacks"
-
1
l.store "Use the following link to trackback from your own site", "Gebruik de volgende link voor een trackback van jouw site"
-
1
l.store "RSS feed for this post", "RSS feed voor dit bericht"
-
1
l.store "trackback uri", "trackback uri"
-
1
l.store "Comments are disabled", "Reacties zijn niet mogelijk"
-
-
# app/views/authors/show.html.erb
-
1
l.store "Web site:", "Website:"
-
1
l.store "MSN:", "MSN:"
-
1
l.store "Yahoo:", "Yahoo:"
-
1
l.store "Jabber:", "Jabber:"
-
1
l.store "AIM:", "AIM:"
-
1
l.store "Twitter:", "Twitter:"
-
1
l.store "About %s", "Over %s"
-
1
l.store "This author has not published any article yet", "Deze auteur heeft nog geen artikelen gepubliceerd"
-
-
# app/views/comments/show.html.erb
-
1
l.store "This comment has been flagged for moderator approval.", "Deze reactie is aangemerkt voor goedkeuring."
-
-
# app/views/layouts/administration.html.erb
-
1
l.store "%s »", ""
-
1
l.store "is proudly powered by", "wordt trots aangedreven door"
-
1
l.store "Dashboard", "Dashboard"
-
-
# app/views/setup/index.html.erb
-
1
l.store "Welcome", "Welkom"
-
1
l.store "Welcome to your %s blog setup. Just fill in your blog title and your email, and Typo will take care of everything else", "Welkom bij je %s blog setup. Vul een titel voor je blog in, en een e-mailadres, en Typo zorgt voor de rest"
-
-
# app/views/shared/_confirm.html.erb
-
1
l.store "Congratulation!", "Gefeliciteerd!"
-
1
l.store "You have successfully signed up", "Je bent succesvol aangemeld"
-
1
l.store "<strong>Login:</strong> %s", "<strong>Inlognaam:</strong> %s"
-
1
l.store "<strong>Password:</strong> %s", "<strong>Wachtwoord:</strong> %s"
-
1
l.store "Don't lose the mail sent at %s or you won't be able to login anymore", "Verlies de e-mail verzonden naar %s, want anders kun je niet meer inloggen"
-
1
l.store "Proceed to %s", "Ga door naar %s"
-
1
l.store "admin", ""
-
-
# app/views/shared/_search.html.erb
-
1
l.store "Live Search", ""
-
-
# test/mocks/themes/typographic/layouts/default.html.erb
-
1
l.store "Powered by %s", "Powered by %s"
-
1
l.store "Designed by %s ", "Ontworpen door %s"
-
-
# test/mocks/themes/typographic/views/articles/_article.html.erb
-
1
l.store "Continue reading...", "Lees meer..."
-
1
l.store "This entry was posted on %s", "Dit bericht was geplaatst op %s"
-
1
l.store "and %s", "en %s"
-
1
l.store "You can follow any response to this entry through the %s", "Je kunt reacties op dit bericht volgen via de %s"
-
1
l.store "Atom feed", "Atom feed"
-
1
l.store "You can leave a %s", "Je kunt een %s achterlaten"
-
1
l.store "or a %s from your own site", "of een %s vanaf je eigen site"
-
1
l.store "Read full article", "Lees volledige artikel"
-
1
l.store "comment", "reactie"
-
1
l.store "trackback", "trackback"
-
-
# test/mocks/themes/typographic/views/articles/_comment.html.erb
-
1
l.store "later", "later"
-
-
# test/mocks/themes/typographic/views/articles/_comment_form.html.erb
-
1
l.store "Leave a comment", "Geef een reactie"
-
1
l.store "Name %s", "Naam %s"
-
1
l.store "enabled", "aangezet"
-
1
l.store "never displayed", "wordt niet getoond"
-
1
l.store "Website", "Website"
-
1
l.store "Textile enabled", "Textile beschikbaar"
-
1
l.store "Markdown enabled", "Markdown beschikbaar"
-
1
l.store "required", "verplicht"
-
-
# test/mocks/themes/typographic/views/articles/_comment_list.html.erb
-
1
l.store "No comments", "Geen reacties"
-
-
# test/mocks/themes/typographic/views/shared/_search.html.erb
-
1
l.store "Searching", "Aan het zoeken"
-
-
# themes/dirtylicious/layouts/default.html.erb
-
1
l.store "Home", "Begin"
-
1
l.store "About", "Over"
-
1
l.store "Designed by %s ported to typo by %s ", "Ontworpen door %s geport naar typo door %s "
-
-
# themes/scribbish/layouts/default.html.erb
-
1
l.store "styled with %s", ""
-
-
# themes/scribbish/views/articles/_article.html.erb
-
1
l.store "Meta", ""
-
1
l.store "permalink", ""
-
-
# themes/true-blue-3/helpers/theme_helper.rb
-
1
l.store "You are here: ", "Je bent hier: "
-
1
l.store "%d comment", ""
-
-
# themes/true-blue-3/views/articles/_article.html.erb
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M", ""
-
-
# themes/true-blue-3/views/articles/_comment.html.erb
-
1
l.store "By", "Door"
-
1
l.store "later:", "later:"
-
-
# themes/true-blue-3/views/articles/_comment_form.html.erb
-
1
l.store "Email address", "E-mailadres"
-
1
l.store "Your website", "Je website"
-
-
# themes/true-blue-3/views/articles/read.html.erb
-
1
l.store "If you liked this article you can %s", ""
-
1
l.store "add me to Twitter", ""
-
1
l.store "Trackbacks for", ""
-
-
# themes/true-blue-3/views/articles/search.html.erb
-
1
l.store "Search results for:", ""
-
-
# themes/true-blue-3/views/categories/index.html.erb
-
1
l.store "Read all articles in %s", ""
-
-
# themes/true-blue-3/views/categories/show.html.erb
-
1
l.store "Previous", "Vorige"
-
1
l.store "Next", "Volgende"
-
-
# vendor/plugins/archives_sidebar/views/content.rhtml
-
1
l.store "Archives", "Archieven"
-
-
# vendor/plugins/authors_sidebar/views/content.rhtml
-
1
l.store "Authors", "Auteurs"
-
-
# vendor/plugins/xml_sidebar/views/content.rhtml
-
1
l.store "Syndicate", ""
-
1
l.store "Category %s", ""
-
1
l.store "Tag %s", ""
-
-
# Obsolete translations
-
1
l.store "Blacklist Patterns", "Blacklist patronen"
-
1
l.store "Choose password", "Kies wachtwoord"
-
1
l.store "Confirm Classification of Checked Items", "Bevestig classificatie van aangevinkte reacties"
-
1
l.store "Content", "Inhoud"
-
1
l.store "Editing pattern", "Wijzig patroon"
-
1
l.store "Pattern", "Patroon"
-
1
l.store "Posts", "Berichten"
-
1
l.store "Read more", "Lees meer"
-
1
l.store "Recent comments", "Recente reacties"
-
1
l.store "Recent trackbacks", "Recente trackbacks"
-
1
l.store "Type", "Type"
-
1
l.store "add new", "voeg toe"
-
end
-
# coding: utf-8
-
# localization Marcin Gil <marcin.gil@gmail.com>
-
# additional localization Szymon (jeznet) Jeż <szymon@jez.net.pl>
-
-
1
Localization.define("pl_PL") do |l|
-
-
# app/controllers/accounts_controller.rb
-
1
l.store "Login successful", ""
-
1
l.store "Login unsuccessful", ""
-
1
l.store "An email has been successfully sent to your address with your new password", ""
-
1
l.store "Oops, something wrong just happened", ""
-
1
l.store "Successfully logged out", ""
-
1
l.store "login", ""
-
1
l.store "signup", ""
-
1
l.store "Recover your password", ""
-
-
# app/controllers/admin/categories_controller.rb
-
1
l.store "Category was successfully saved.", ""
-
1
l.store "Category could not be saved.", ""
-
-
# app/controllers/admin/content_controller.rb
-
1
l.store "Error, you are not allowed to perform this action", ""
-
1
l.store "Preview", ""
-
1
l.store "Article was successfully created", ""
-
1
l.store "Article was successfully updated.", ""
-
-
# app/controllers/admin/feedback_controller.rb
-
1
l.store "Deleted", ""
-
1
l.store "Not found", ""
-
1
l.store "Deleted %d item(s)", ""
-
1
l.store "Marked %d item(s) as Ham", ""
-
1
l.store "Marked %d item(s) as Spam", ""
-
1
l.store "Confirmed classification of %s item(s)", ""
-
1
l.store "Not implemented", ""
-
1
l.store "All spam have been deleted", ""
-
1
l.store "Comment was successfully created.", ""
-
1
l.store "Comment was successfully updated.", ""
-
-
# app/controllers/admin/pages_controller.rb
-
1
l.store "Page was successfully created.", ""
-
1
l.store "Page was successfully updated.", ""
-
-
# app/controllers/admin/profiles_controller.rb
-
1
l.store "User was successfully updated.", ""
-
-
# app/controllers/admin/resources_controller.rb
-
1
l.store "Error occurred while updating Content Type.", "Wystąpił błąd w trakcie aktualizacji typu zawartości."
-
1
l.store "complete", "zakończony"
-
1
l.store "File uploaded: ", "Załadowany plik: "
-
1
l.store "Unable to upload", "Nie można załadować"
-
1
l.store "Metadata was successfully updated.", "Metadane zostały pomyślnie zaktualizowane."
-
1
l.store "Not all metadata was defined correctly.", "Nie wszystkie metadane zostały poprawnie zdefiniowane."
-
1
l.store "Content Type was successfully updated.", "Typ zawartości został pomyślnie zaktualizowany."
-
-
# app/controllers/admin/settings_controller.rb
-
1
l.store "Please review and save the settings before continuing", ""
-
1
l.store "config updated.", "konfiguracja zaktualizowana."
-
-
# app/controllers/admin/sidebar_controller.rb
-
1
l.store "It seems something went wrong. Maybe some of your sidebars are actually missing and you should either reinstall them or remove them manually", ""
-
-
# app/controllers/admin/tags_controller.rb
-
1
l.store "Tag was successfully updated.", ""
-
-
# app/controllers/admin/themes_controller.rb
-
1
l.store "Theme changed successfully", ""
-
1
l.store "You are not authorized to open this file", ""
-
1
l.store "File saved successfully", ""
-
1
l.store "Unable to write file", ""
-
-
# app/controllers/admin/users_controller.rb
-
1
l.store "User was successfully created.", ""
-
-
# app/controllers/application_controller.rb
-
1
l.store "Localization.rtl", ""
-
-
# app/controllers/articles_controller.rb
-
1
l.store "No posts found...", ""
-
1
l.store "Archives for", ""
-
1
l.store "Archives for ", ""
-
1
l.store ", Articles for ", ""
-
-
# app/controllers/grouping_controller.rb
-
1
l.store "page", ""
-
1
l.store "everything about", ""
-
-
# app/helpers/admin/base_helper.rb
-
1
l.store "Cancel", "Anuluj"
-
1
l.store "Store", ""
-
1
l.store "Delete", "Usuń"
-
1
l.store "delete", ""
-
1
l.store "Delete content", ""
-
1
l.store "Are you sure?", ""
-
1
l.store "Please select", ""
-
1
l.store "There are no %s yet. Why don't you start and create one?", ""
-
1
l.store "or", "lub"
-
1
l.store "Save", "Zapisz"
-
1
l.store "Edit", "Zmień"
-
1
l.store "Show", ""
-
1
l.store "Published", "Opublikowane"
-
1
l.store "Unpublished", ""
-
1
l.store "Show help on Typo macros", ""
-
1
l.store "Back to overview", "Wróć do podglądu"
-
1
l.store "Name", "Nazwa"
-
1
l.store "Description", "Opis"
-
1
l.store "Tag", ""
-
-
# app/helpers/admin/categories_helper.rb
-
1
l.store "no articles", "brak artykułów"
-
1
l.store "1 article", "1 artykuł"
-
1
l.store "%d articles", "%d artykuły"
-
-
# app/helpers/admin/content_helper.rb
-
1
l.store "Destroy this draft", ""
-
-
# app/helpers/admin/feedback_helper.rb
-
1
l.store "Show conversation", ""
-
1
l.store "Flag as %s", ""
-
-
# app/helpers/application_helper.rb
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M:%%S GMT", ""
-
1
l.store "%%d. %%b", ""
-
1
l.store "%d comments", "%d komentarze"
-
1
l.store "no comments", "brak komentarzy"
-
1
l.store "1 comment", "1 komentarz"
-
1
l.store "no trackbacks", "brak trackbacków"
-
1
l.store "1 trackback", "1 trackback"
-
1
l.store "%d trackbacks", "%d trackbacki"
-
-
# app/helpers/content_helper.rb
-
1
l.store "Posted in", ""
-
1
l.store "Tags", "Tagi"
-
1
l.store "no posts", ""
-
1
l.store "1 post", ""
-
1
l.store "%d posts", ""
-
-
# app/models/article.rb
-
1
l.store "Original article writen by", ""
-
1
l.store "and published on", ""
-
1
l.store "direct link to this article", ""
-
1
l.store "If you are reading this article elsewhere than", ""
-
1
l.store "it has been illegally reproduced and without proper authorization", ""
-
-
# app/models/blog.rb
-
1
l.store "You need a permalink format with an identifier : %%month%%, %%year%%, %%day%%, %%title%%", ""
-
1
l.store "Can't end in .rss or .atom. These are reserved to be used for feed URLs", ""
-
-
# app/models/feedback/states.rb
-
1
l.store "Unclassified", ""
-
1
l.store "Just Presumed Ham", ""
-
1
l.store "Ham?", ""
-
1
l.store "Just Marked As Ham", ""
-
1
l.store "Ham", ""
-
1
l.store "Spam?", ""
-
1
l.store "Just Marked As Spam", ""
-
1
l.store "Spam", ""
-
-
# app/views/accounts/login.html.erb
-
1
l.store "I've lost my password", ""
-
1
l.store "Login", "Login"
-
1
l.store "Password", "Hasło"
-
1
l.store "Remember me", ""
-
1
l.store "Submit", ""
-
1
l.store "Back to ", ""
-
-
# app/views/accounts/recover_password.html.erb
-
1
l.store "Username or email", ""
-
-
# app/views/accounts/signup.html.erb
-
1
l.store "Create an account", ""
-
1
l.store "Username", "Użytkownik"
-
1
l.store "Email", "Email"
-
1
l.store "Signup", "Zapisz się"
-
-
# app/views/admin/categories/_categories.html.erb
-
1
l.store "Title", "Tytuł"
-
1
l.store "Reorder", "Zmień porządek"
-
1
l.store "Sort alphabetically", "Sortuj alfabetycznie"
-
-
# app/views/admin/categories/_form.html.erb
-
1
l.store "Keywords", ""
-
-
# app/views/admin/categories/destroy.html.erb
-
1
l.store "Are you sure you want to delete the category ", "Czy na pewno chcesz skasować kategorię "
-
1
l.store "Delete this category", "Usuń tą kategorię"
-
1
l.store "Categories", ""
-
-
# app/views/admin/categories/index.html.erb
-
1
l.store "New Category", "Utwórz nową kategorię"
-
-
# app/views/admin/categories/new.html.erb
-
1
l.store "%s Category", ""
-
-
# app/views/admin/categories/reorder.html.erb
-
1
l.store "(Done)", "(Zakończono)"
-
-
# app/views/admin/content/_attachment.html.erb
-
1
l.store "Remove", "Skasuj"
-
1
l.store "Currently this article has the following resources", "Artykuł ma dołączone następujące zasoby"
-
1
l.store "You can associate the following resources", "Możesz przypisać do artykułu następujące zasoby"
-
1
l.store "Really delete attachment", "Na pewno skasować?"
-
1
l.store "Add Another Attachment", "Dodaj kolejny załącznik"
-
-
# app/views/admin/content/_drafts.html.erb
-
1
l.store "Drafts", ""
-
-
# app/views/admin/content/_form.html.erb
-
1
l.store "Publish settings", ""
-
1
l.store "Allow comments", "Zezwól na dodawanie komentarzy"
-
1
l.store "Allow trackbacks", "Zezwól na podawanie trackbacków"
-
1
l.store "Password:", ""
-
1
l.store "Publish", "Publikuj"
-
1
l.store "Excerpt", ""
-
1
l.store "Excerpts are posts summaries that are shown on your blog homepage only but won’t appear on the post itself", ""
-
1
l.store "Uploads", "Załadowane zasoby"
-
1
l.store "Post settings", ""
-
1
l.store "Publish at", "Opublikowane dnia"
-
1
l.store "Permalink", "Permalink"
-
1
l.store "Article filter", "Filtr artykułów"
-
1
l.store "Save as draft", ""
-
-
# app/views/admin/content/destroy.html.erb
-
1
l.store "Are you sure you want to delete this article", "Czy na pewno chcesz usunąć ten artykuł"
-
1
l.store "Delete this article", "Usuń artykuł"
-
1
l.store "Articles", ""
-
-
# app/views/admin/content/index.html.erb
-
1
l.store "New Article", ""
-
1
l.store "Search articles that contain ...", ""
-
1
l.store "Search", "Szukaj"
-
1
l.store "Author", "Autor"
-
1
l.store "Date", "Data"
-
1
l.store "Feedback", "Komentarze"
-
1
l.store "Filter", ""
-
1
l.store "Manage articles", ""
-
-
# app/views/admin/dashboard/_comments.html.erb
-
1
l.store "Latest Comments", "Ostatnie komentarze"
-
1
l.store "No comments yet", "Brak komentarzy"
-
1
l.store "By %s on %s", "Przez %s odnośnie %s"
-
-
# app/views/admin/dashboard/_inbound.html.erb
-
1
l.store "Inbound links", "Linki przychodzące"
-
1
l.store "No one made a link to you yet", "Nikt jeszcze nie stworzył do ciebie łącza"
-
1
l.store " made a link to you saying ", " wykonał do ciebie łącze o treści "
-
1
l.store "You have no internet connection", "Nie masz połączenia internetowego"
-
-
# app/views/admin/dashboard/_overview.html.erb
-
1
l.store "This place gives you a quick overview of what happens on your Typo blog and what you can do. Maybe will you want to %s, %s or %s.", ""
-
1
l.store "update your profile or change your password", "zaktualizować profil lub zmienić hasło"
-
1
l.store "You can also do a bit of design, %s or %s.", "Możesz również trochę poprojektować wygląd, %s lub %s."
-
1
l.store "change your blog presentation", "zmienić wygląd swojego bloga"
-
1
l.store "enable plugins", "aktywować wtyczkę"
-
1
l.store "write a post", "utworzyć wpis"
-
1
l.store "write a page", "utworzyć stronę"
-
-
# app/views/admin/dashboard/_popular.html.erb
-
1
l.store "Most popular", "Najpopularniejsze"
-
1
l.store "Nothing to show yet", "Nie ma jeszcze nic do pokazania"
-
-
# app/views/admin/dashboard/_posts.html.erb
-
1
l.store "Latest Posts", "Ostatnie Wpisy"
-
1
l.store "No posts yet, why don't you start and write one", ""
-
-
# app/views/admin/dashboard/_typo_dev.html.erb
-
1
l.store "Latest news from the Typo development blog", "Najnowsze wieści z bloga developerskiego Typo"
-
1
l.store "Oh no, nothing new", ""
-
-
# app/views/admin/dashboard/_welcome.html.erb
-
1
l.store "Welcome back, %s!", "Witamy spowrotem, %s!"
-
1
l.store "%d articles and %d comments were posted since your last connexion", "%d artykułów i %d komentarzy zostało opublikowanych od twojego ostaniego połączenia"
-
1
l.store "You're running Typo %s", "Działasz na Typo %s"
-
1
l.store "Total posts : %d", "Liczba wszystkich wpisów: %d"
-
1
l.store "Your posts : %d", "Twoje wpisy: %d"
-
1
l.store "Total comments : %d", "Liczba wszystkich komentarzy: %d"
-
1
l.store "Spam comments : %d", "Niechciane komentarze (spam): %d"
-
-
# app/views/admin/feedback/_button.html.erb
-
1
l.store "Select action", ""
-
1
l.store "Delete Checked Items", ""
-
1
l.store "Delete all spam", ""
-
1
l.store "Mark Checked Items as Spam", ""
-
1
l.store "Mark Checked Items as Ham", ""
-
1
l.store "All comments", ""
-
1
l.store "Limit to ham", ""
-
1
l.store "Unapproved comments", ""
-
1
l.store "Limit to spam", "Pokaż spam"
-
-
# app/views/admin/feedback/_form.html.erb
-
1
l.store "Add a comment", ""
-
1
l.store "Url", "Strona web"
-
-
# app/views/admin/feedback/_spam.html.erb
-
1
l.store "This comment by <strong>%s</strong> was flagged as spam, %s?", ""
-
-
# app/views/admin/feedback/article.html.erb
-
1
l.store "Comments for %s", ""
-
1
l.store "Status", "Stan"
-
1
l.store "Comment Author", ""
-
1
l.store "Comment", ""
-
-
# app/views/admin/feedback/edit.html.erb
-
1
l.store "Comments for", "Komentarze do"
-
-
# app/views/admin/feedback/index.html.erb
-
1
l.store "Search Comments and Trackbacks that contain", ""
-
1
l.store "Article", ""
-
-
# app/views/admin/pages/_form.html.erb
-
1
l.store "Online", "Online"
-
1
l.store "Page settings", ""
-
1
l.store "Permanent link", ""
-
-
# app/views/admin/pages/destroy.html.erb
-
1
l.store "Pages", "Strony"
-
1
l.store "Are you sure you want to delete the page", "Czy na pewno chcesz usunąć tą stronę"
-
1
l.store "Delete this page", "Usuń tą stronę"
-
-
# app/views/admin/pages/index.html.erb
-
1
l.store "New Page", ""
-
1
l.store "Manage pages", ""
-
-
# app/views/admin/profiles/index.html.erb
-
1
l.store "Your profile", ""
-
-
# app/views/admin/resources/_mime_edit.html.erb
-
1
l.store "Content Type", "Typ treści"
-
-
# app/views/admin/resources/_pages.html.erb
-
1
l.store "Previous page", "Poprzednia strona"
-
1
l.store "Next page", "Następna strona"
-
-
# app/views/admin/resources/_upload.html.erb
-
1
l.store "Upload a File to your Site", "Wyślij plik na swój blog"
-
1
l.store "File", "Plik"
-
1
l.store "Upload", "Wyślij"
-
-
# app/views/admin/resources/destroy.html.erb
-
1
l.store "Are you sure you want to delete this file", "Czy na pewno chcesz skasować ten plik"
-
1
l.store "Delete this file from the webserver?", "Skasować ten plik z serwera?"
-
1
l.store "File Uploads", "Wysłane pliki"
-
-
# app/views/admin/resources/images.html.erb
-
1
l.store "Thumbnail", ""
-
1
l.store "File Size", "Rozmiar pliku"
-
1
l.store "Images", "Grafika"
-
1
l.store "right-click for link", "Kliknij PPM by uzyskać łącze"
-
-
# app/views/admin/resources/index.html.erb
-
1
l.store "Filename", "Nazwa pliku"
-
-
# app/views/admin/settings/_submit.html.erb
-
1
l.store "Update settings", ""
-
-
# app/views/admin/settings/feedback.html.erb
-
1
l.store "Enable comments by default", "Komentarze domyślnie włączone"
-
1
l.store "Enable Trackbacks by default", "Trackbacki domyślnie włączone"
-
1
l.store "Enable feedback moderation", "Włącz moderację komentarzy"
-
1
l.store "You can enable site wide feeback moderation. If you do so, no comment or trackback will appear on your blog unless you validate it", "Możesz włączyć globalną moderację komentarzy. W takim przypadku żaden komentarz nie ukaże się na blogu aż do momentu jego akceptacji."
-
1
l.store "Comments filter", "Filtr komentarzy"
-
1
l.store "Enable gravatars", "Włącz gravatary"
-
1
l.store "Show your email address", "Pokaż swój adres email"
-
1
l.store "Notifications", ""
-
1
l.store "Typo can notify you when new articles or comments are posted", "Typo może wysyłać powiadomienia o nowych artykułach bądź komentarzach"
-
1
l.store "Source Email", "Źródłowy adres email"
-
1
l.store "Email address used by Typo to send notifications", "Adres email używany przez Typo do wysyłania powiadomień"
-
1
l.store "Enabling spam protection will make typo compare the IP address of posters as well as the contents of their posts against local and remote blacklists. Good defense against spam bots", "Włączenie ochrony przed spamem sprawi, iż Typo będzie porównywać adresy IP nadawców oraz treść ich postów z lokalnymi i zdalnymi czarnymi listami. To dobra obrona przed spam botami."
-
1
l.store "Enable spam protection", "Włącz ochronę przed spamem"
-
1
l.store "Akismet Key", "Klucz Akismet"
-
1
l.store "Typo can (optionally) use the %s spam-filtering service. You need to register with Akismet and receive an API key before you can use their service. If you have an Akismet key, enter it here", "Typo może (opcjonalnie) stosować usługę %s do filtrowania spamu. Musisz zarejestrować się w serwisie Akismet by otrzymać klucz API nim będzie można używać tej usługi. Jeśli posiadasz klucz API Akismet, wprowadź go tutaj"
-
1
l.store "Disable trackbacks site-wide", ""
-
1
l.store "This setting allows you to disable trackbacks for every article in your blog. It won't remove existing trackbacks, but it will prevent any further attempt to add a trackback anywhere on your blog.", "Ta opcja pozwala na wyłączenie trackbacków we wszystkich artykułach. Nie usunie jednak istniejących trackbacków, a jedynie zabroni dodawania nowych."
-
1
l.store "Disable comments after", "Wyłącz komentarze po "
-
1
l.store "days", "dni"
-
1
l.store "Set to 0 to never disable comments", "Ustaw 0 by komentarze były zawsze włączone"
-
1
l.store "Max Links", "Max. liczba łączy"
-
1
l.store "Typo will automatically reject comments and trackbacks which contain over a certain amount of links in them", "Typo automatycznie odrzuca komentarze i trackbacki, które zawierają większą, niż podana, liczbę łączy"
-
1
l.store "Set to 0 to never reject comments", "Ustaw 0 by komentarze były zawsze akceptowane"
-
1
l.store "Feedback settings", ""
-
-
# app/views/admin/settings/index.html.erb
-
1
l.store "Your blog", "Twój blog"
-
1
l.store "Blog name", "Nazwa bloga"
-
1
l.store "Blog subtitle", "Podtytuł bloga"
-
1
l.store "Blog URL", "Adres URL bloga"
-
1
l.store "Language", "Język"
-
1
l.store "Allow users to register", ""
-
1
l.store "You can allow users to register to your blog. By default, they will register as contributors, an unpriviledged account level which grant them no rights but own a profile on the site. If you don't want users to register, you can thus add them by yourself in the users part of this admin.", ""
-
1
l.store "Items to display in admin lists", ""
-
1
l.store "Publishing options", ""
-
1
l.store "Display", "Wyświetl"
-
1
l.store "articles on my homepage by default", "domyślnie artykułów na stronie głównej"
-
1
l.store "articles in my news feed by default", "domyślnie artykułów w subskrypcji RSS"
-
1
l.store "Show full article on feed", "Pokaż pełną treść artykułu w subskrypcji RSS"
-
1
l.store "Feedburner ID", ""
-
1
l.store "General settings", "Ustawienia ogólne"
-
1
l.store "You can use your Google Feedburner account instead of Typo feed URL. To enable this, fill this form with your Feedburner ID.", ""
-
-
# app/views/admin/settings/seo.html.erb
-
1
l.store "Search Engine Optimisation", "Optymalizacja silnika wyszukiwania"
-
1
l.store "Format of permalink", ""
-
1
l.store "Google Analytics", ""
-
1
l.store "Google verification link", ""
-
1
l.store "Meta description", ""
-
1
l.store "Meta keywords", ""
-
1
l.store "Use RSS description", ""
-
1
l.store "Index categories", ""
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every category page, removing them from search engines and preventing duplicate content issues", ""
-
1
l.store "Index tags", ""
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every tags page, removing them from search engines and preventing duplicate content issues", ""
-
1
l.store "Robots.txt", ""
-
1
l.store "You robots.txt file is not writeable. Typo won't be able to write it", ""
-
1
l.store "Search Engine Optimization", ""
-
1
l.store "This will display", ""
-
1
l.store "at the bottom of each of your post in the RSS feed", ""
-
-
# app/views/admin/settings/update_database.html.erb
-
1
l.store "Information", "Informacja"
-
1
l.store "Current database version", "Aktualna wersja bazy danych"
-
1
l.store "New database version", "Nowa wersja bazy danych"
-
1
l.store "Your database supports migrations", "Twoja baza danych wspiera migracje"
-
1
l.store "Needed migrations", "Potrzebne migracje"
-
1
l.store "You are up to date!", "Wszystko jest aktualne!"
-
1
l.store "Update database now", "Aktualizuj bazę danych"
-
1
l.store "may take a moment", "może zająć dłuższą chwilę"
-
1
l.store "Database migration", "Migruj bazę danych"
-
1
l.store "yes", "tak"
-
1
l.store "no", "nie"
-
-
# app/views/admin/settings/write.html.erb
-
1
l.store "Send trackbacks", "Wyślij trackbacki"
-
1
l.store "When publishing articles, Typo can send trackbacks to websites that you link to. This should be disabled for private blogs as it will leak non-public information to sites that you're discussing. For public blogs, there's no real point in disabling this.", "Publikując artykuły, Typo może powiadomić strony, do których podasz łącza. Opcja ta powinna być wyłączona w przypadku blogów osobistych, gdyż może doprowadzić do wycieku prywatnych informacji. W przypadku blogów publicznych wyłączenie tej opcji nie ma większego sensu."
-
1
l.store "URLs to ping automatically", "Automatycznie pingowane łącza"
-
1
l.store "Latitude, Longitude", "Szerokość geogr., długość geogr."
-
1
l.store "your lattitude and longitude", "Twoją szerokość i długość geograficzna"
-
1
l.store "exemple", "na przykład"
-
1
l.store "Write", "Pisanie"
-
-
# app/views/admin/sidebar/_availables.html.erb
-
1
l.store "You have no plugins installed", "Brak zainstalowanych wtyczek"
-
-
# app/views/admin/sidebar/_publish.html.erb
-
1
l.store "Changes published", "Opublikowane zmiany"
-
-
# app/views/admin/sidebar/_target.html.erb
-
1
l.store "Drag some plugins here to fill your sidebar", "Przeciągnij i upuść wtyczki na pasek boczny"
-
-
# app/views/admin/sidebar/index.html.erb
-
1
l.store "Drag and drop to change the sidebar items displayed on this blog. To remove items from the sidebar just click remove Changes are saved immediately, but not activated until you click the 'Publish' button", "Przeciągnij i upuść pozycje, które mają być wyświetlone na blogu. By usunąć pozycję naciśnij *Usuń*. Zmiany są zapisywane od razu, lecz nie są aktywne do momentu kliknięcia 'Publikuj zmiany'"
-
1
l.store "Available Items", "Dostępne elementy"
-
1
l.store "Active Sidebar items", "Aktywne elementy paska"
-
1
l.store "Get more plugins", ""
-
1
l.store "Sidebar", ""
-
1
l.store "Publish changes", "Publikuj zmiany"
-
-
# app/views/admin/tags/_form.html.erb
-
1
l.store "Display name", "Wyświetlana nazwa"
-
-
# app/views/admin/tags/destroy.html.erb
-
1
l.store "Are you sure you want to delete the tag", ""
-
1
l.store "Delete this tag", ""
-
-
# app/views/admin/tags/edit.html.erb
-
1
l.store "Editing ", ""
-
1
l.store "Back to tags list", ""
-
-
# app/views/admin/tags/index.html.erb
-
1
l.store "Display Name", ""
-
1
l.store "Manage tags", ""
-
-
# app/views/admin/themes/catalogue.html.erb
-
1
l.store "Sorry the theme catalogue is not available", ""
-
1
l.store "Theme catalogue", ""
-
-
# app/views/admin/themes/editor.html.erb
-
1
l.store "Theme editor", ""
-
-
# app/views/admin/themes/index.html.erb
-
1
l.store "Active theme", "Temat aktywny"
-
1
l.store "Get more themes", ""
-
1
l.store "You can download third party themes from officially supported %s ", ""
-
1
l.store "Typogarden", ""
-
1
l.store "To install a theme you just need to upload the theme folder into your themes directory. Once a theme is uploaded, you should see it on this page.", ""
-
1
l.store "Choose a theme", ""
-
-
# app/views/admin/users/_form.html.erb
-
1
l.store "Account settings", ""
-
1
l.store "Password confirmation", ""
-
1
l.store "Profile", ""
-
1
l.store "User's status", ""
-
1
l.store "Active", ""
-
1
l.store "Inactive", ""
-
1
l.store "Profile Settings", ""
-
1
l.store "Firstname", ""
-
1
l.store "Lastname", ""
-
1
l.store "Nickname", ""
-
1
l.store "Editor", ""
-
1
l.store "Use simple editor", ""
-
1
l.store "Use visual rich editor", ""
-
1
l.store "Send notification messages via email", "Wysyłaj powiadomienia emailem"
-
1
l.store "Send notification messages when new articles are posted", "Wysyłaj powiadomienia o nowych artykułach"
-
1
l.store "Send notification messages when comments are posted", "Wysyłaj powiadomienia o nowych komentarzach"
-
1
l.store "Contact Options", ""
-
1
l.store "Your site", ""
-
1
l.store "display url on public profile", ""
-
1
l.store "Your MSN", ""
-
1
l.store "display MSN ID on public profile", ""
-
1
l.store "Your Yahoo ID", ""
-
1
l.store "display Yahoo! ID on public profile", ""
-
1
l.store "Your Jabber ID", ""
-
1
l.store "display Jabber ID on public profile", ""
-
1
l.store "Your AIM id", ""
-
1
l.store "display AIM ID on public profile", ""
-
1
l.store "Your Twitter username", ""
-
1
l.store "display twitter on public profile", ""
-
1
l.store "Tell us more about you", ""
-
-
# app/views/admin/users/destroy.html.erb
-
1
l.store "Really delete user", "Na pewno usunąć użytkownika"
-
1
l.store "Yes", ""
-
1
l.store "Users", ""
-
-
# app/views/admin/users/edit.html.erb
-
1
l.store "Edit User", "Zmień dane użytkownika"
-
-
# app/views/admin/users/index.html.erb
-
1
l.store "New User", "Nowy użytkownik"
-
1
l.store "Comments", ""
-
1
l.store "State", ""
-
1
l.store "%s user", ""
-
-
# app/views/admin/users/new.html.erb
-
1
l.store "Add User", ""
-
-
# app/views/articles/_article.html.erb
-
1
l.store "Posted by", "Opublikowane przez"
-
1
l.store "Continue reading", "Czytaj dalej"
-
-
# app/views/articles/_comment.html.erb
-
1
l.store "said", "powiedział"
-
1
l.store "This comment has been flagged for moderator approval. It won't appear on this blog until the author approves it", "Ten komentarz oczekuje na akceptację. Nie ukaże się do czasu zaakceptowania przez autora."
-
-
# app/views/articles/_comment_box.html.erb
-
1
l.store "Your name", "Twoja nazwa"
-
1
l.store "Your email", "Twój email"
-
1
l.store "Your message", "Treść"
-
1
l.store "Comment Markup Help", "Pomoc języka formatowania"
-
1
l.store "Preview comment", "Obejrzyj komentarz"
-
1
l.store "leave url/email", ""
-
-
# app/views/articles/_comment_failed.html.erb
-
1
l.store "Oops, something wrong happened, the comment could not be saved", ""
-
-
# app/views/articles/_trackback.html.erb
-
1
l.store "From", "Z"
-
-
# app/views/articles/archives.html.erb
-
1
l.store "No articles found", "Brak artykułów"
-
1
l.store "posted in", ""
-
-
# app/views/articles/comment_preview.html.erb
-
1
l.store "is about to say", "zaraz powie"
-
-
# app/views/articles/groupings.html.erb
-
1
l.store "There are", "Istnieje"
-
-
# app/views/articles/read.html.erb
-
1
l.store "Leave a response", "Skomentuj"
-
1
l.store "Trackbacks", ""
-
1
l.store "Use the following link to trackback from your own site", "Użyj następującego trackbacka na swojej stronie"
-
1
l.store "RSS feed for this post", "Subskrypcja RSS dla tego wpisu"
-
1
l.store "trackback uri", "Adres trackback"
-
1
l.store "Comments are disabled", "Komentarze wyłączone"
-
-
# app/views/authors/show.html.erb
-
1
l.store "Web site:", ""
-
1
l.store "MSN:", ""
-
1
l.store "Yahoo:", ""
-
1
l.store "Jabber:", ""
-
1
l.store "AIM:", ""
-
1
l.store "Twitter:", ""
-
1
l.store "About %s", ""
-
1
l.store "This author has not published any article yet", ""
-
-
# app/views/comments/show.html.erb
-
1
l.store "This comment has been flagged for moderator approval.", ""
-
-
# app/views/layouts/administration.html.erb
-
1
l.store "%s »", ""
-
1
l.store "is proudly powered by", "dumnie działa na"
-
1
l.store "Dashboard", "Podsumowanie"
-
-
# app/views/setup/index.html.erb
-
1
l.store "Welcome", ""
-
1
l.store "Welcome to your %s blog setup. Just fill in your blog title and your email, and Typo will take care of everything else", ""
-
-
# app/views/shared/_confirm.html.erb
-
1
l.store "Congratulation!", ""
-
1
l.store "You have successfully signed up", ""
-
1
l.store "<strong>Login:</strong> %s", ""
-
1
l.store "<strong>Password:</strong> %s", ""
-
1
l.store "Don't lose the mail sent at %s or you won't be able to login anymore", ""
-
1
l.store "Proceed to %s", ""
-
1
l.store "admin", ""
-
-
# app/views/shared/_search.html.erb
-
1
l.store "Live Search", ""
-
-
# test/mocks/themes/typographic/layouts/default.html.erb
-
1
l.store "Powered by %s", ""
-
1
l.store "Designed by %s ", ""
-
-
# test/mocks/themes/typographic/views/articles/_article.html.erb
-
1
l.store "Continue reading...", ""
-
1
l.store "This entry was posted on %s", ""
-
1
l.store "and %s", ""
-
1
l.store "You can follow any response to this entry through the %s", ""
-
1
l.store "Atom feed", ""
-
1
l.store "You can leave a %s", ""
-
1
l.store "or a %s from your own site", ""
-
1
l.store "Read full article", ""
-
1
l.store "comment", ""
-
1
l.store "trackback", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment.html.erb
-
1
l.store "later", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment_form.html.erb
-
1
l.store "Leave a comment", ""
-
1
l.store "Name %s", ""
-
1
l.store "enabled", ""
-
1
l.store "never displayed", ""
-
1
l.store "Website", ""
-
1
l.store "Textile enabled", ""
-
1
l.store "Markdown enabled", ""
-
1
l.store "required", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment_list.html.erb
-
1
l.store "No comments", ""
-
-
# test/mocks/themes/typographic/views/shared/_search.html.erb
-
1
l.store "Searching", ""
-
-
# themes/dirtylicious/layouts/default.html.erb
-
1
l.store "Home", ""
-
1
l.store "About", ""
-
1
l.store "Designed by %s ported to typo by %s ", ""
-
-
# themes/scribbish/layouts/default.html.erb
-
1
l.store "styled with %s", ""
-
-
# themes/scribbish/views/articles/_article.html.erb
-
1
l.store "Meta", ""
-
1
l.store "permalink", ""
-
-
# themes/true-blue-3/helpers/theme_helper.rb
-
1
l.store "You are here: ", ""
-
1
l.store "%d comment", ""
-
-
# themes/true-blue-3/views/articles/_article.html.erb
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M", ""
-
-
# themes/true-blue-3/views/articles/_comment.html.erb
-
1
l.store "By", ""
-
1
l.store "later:", ""
-
-
# themes/true-blue-3/views/articles/_comment_form.html.erb
-
1
l.store "Email address", ""
-
1
l.store "Your website", ""
-
-
# themes/true-blue-3/views/articles/read.html.erb
-
1
l.store "If you liked this article you can %s", ""
-
1
l.store "add me to Twitter", ""
-
1
l.store "Trackbacks for", "Trackbacki do"
-
-
# themes/true-blue-3/views/articles/search.html.erb
-
1
l.store "Search results for:", ""
-
-
# themes/true-blue-3/views/categories/index.html.erb
-
1
l.store "Read all articles in %s", ""
-
-
# themes/true-blue-3/views/categories/show.html.erb
-
1
l.store "Previous", "Poprzednie"
-
1
l.store "Next", "Następne"
-
-
# vendor/plugins/archives_sidebar/views/content.rhtml
-
1
l.store "Archives", "Archiwa"
-
-
# vendor/plugins/authors_sidebar/views/content.rhtml
-
1
l.store "Authors", ""
-
-
# vendor/plugins/xml_sidebar/views/content.rhtml
-
1
l.store "Syndicate", "Subskrypcje"
-
1
l.store "Category %s", ""
-
1
l.store "Tag %s", ""
-
-
# Obsolete translations
-
1
l.store "%d categories", "%d kategorie"
-
1
l.store "%d tags", "%d tagi"
-
1
l.store "%d users", "%d użytkownicy"
-
1
l.store "1 category", "kategoria"
-
1
l.store "1 tag", "1 tag"
-
1
l.store "1 user", "użytkownik"
-
1
l.store "A new message was posted to ", "Nowy wpis został dodany do "
-
1
l.store "AIM Presence", "Status AIM"
-
1
l.store "AIM Status", "Status AIM"
-
1
l.store "Action", "Akcje"
-
1
l.store "Activate", "Aktywuj"
-
1
l.store "Add MetaData", "Dodaj metadane"
-
1
l.store "Add category", "Dodaj kategorię"
-
1
l.store "Add new user", "Dodaj nowego użytkownika"
-
1
l.store "Add pattern", "Dodaj wzorzec"
-
1
l.store "Advanced settings", "Ustawienia zaawansowane"
-
1
l.store "Allow non-ajax comments", "Zezwól na nie-AJAXowe komentarze"
-
1
l.store "Are you sure you want to delete this filter", "Czy na pewno chcesz usunąć ten filtr tekstu"
-
1
l.store "Are you sure you want to delete this item?", "Czy na pewno chcesz usunąć tą pozycję?"
-
1
l.store "Article Attachments", "Załączniki artykułu"
-
1
l.store "Article Body", "Nagłówek artykułu"
-
1
l.store "Article Content", "Treść artykułu"
-
1
l.store "Article Options", "Opcje artykułu"
-
1
l.store "Articles in", "Artykuły w"
-
1
l.store "Attachments", "Załączniki"
-
1
l.store "Back to the blog", "Wróć do bloga"
-
1
l.store "Basic settings", "Ustawienia podstawowe"
-
1
l.store "Blacklist", "Czarna lista"
-
1
l.store "Blacklist Patterns", "Czarna lista"
-
1
l.store "Blog advanced settings", "Ustawienia zaawansowane bloga"
-
1
l.store "Blog settings", "Ustawienia bloga"
-
1
l.store "Body", "Treść"
-
1
l.store "Cache", "Bufor"
-
1
l.store "Cache was cleared", "Bufor opróżniono"
-
1
l.store "Category", "Kategoria"
-
1
l.store "Category could not be created.", "Kategoria nie została utworzona."
-
1
l.store "Category title", "Tytuł kategorii"
-
1
l.store "Category was successfully created.", "Kategoria została pomyślnie utworzona."
-
1
l.store "Category was successfully updated.", "Kategoria została pomyślnie zaktualizowana."
-
1
l.store "Change your blog presentation", "Zmienić wygląd swojego bloga"
-
1
l.store "Choose password", "Wybierz hasło"
-
1
l.store "Choose theme", "Wybierz temat"
-
1
l.store "Comments and Trackbacks for", "Komentarze i trackbacki do"
-
1
l.store "Confirm password", "Potwierdź hasło"
-
1
l.store "Copyright Information", "Informacje o prawach (copyright)"
-
1
l.store "Create new Blacklist", "Utwórz nową czarną listę"
-
1
l.store "Create new category", "Utwórz nową kategorię"
-
1
l.store "Create new page", "Utwórz nową stronę"
-
1
l.store "Create new text filter", "Utwórz nowy filtr"
-
1
l.store "Creating comment", "Tworzenie komentarza"
-
1
l.store "Creating text filter", "Tworzenie filtra tekstó"
-
1
l.store "Creating trackback", "Tworzenie trackbacka"
-
1
l.store "Creating user", "Tworzenie użytkownika"
-
1
l.store "Currently this article is listed in following categories", "Artykuł jest opublikowany w następujących kategoriach"
-
1
l.store "Customize", "Personalizuj"
-
1
l.store "Customize Sidebar", "Personalizuj pasek boczny"
-
1
l.store "Delete this filter", "Usuń filtr"
-
1
l.store "Design", "Wygląd"
-
1
l.store "Desired login", "Proponowany login"
-
1
l.store "Discuss", "Dyskusje"
-
1
l.store "Do you want to go to your blog?", "Czy chcesz obejrzeć Twój blog?"
-
1
l.store "Duration", "Czas trwania"
-
1
l.store "Edit Article", "Edytuj artykuł"
-
1
l.store "Edit MetaData", "Zmień metadane"
-
1
l.store "Edit this article", "Edytuj ten artykuł"
-
1
l.store "Edit this category", "Edytuj tą kategorię"
-
1
l.store "Edit this filter", "Modyfikuj ten filtr"
-
1
l.store "Edit this page", "Edytuj tą stronę"
-
1
l.store "Edit this trackback", "Modyfikuj ten trackback"
-
1
l.store "Editing User", "Zmiana danych użytkownika"
-
1
l.store "Editing category", "Edytuj kategorię"
-
1
l.store "Editing comment", "Edycja komentarza"
-
1
l.store "Editing page", "Edytuj stronę"
-
1
l.store "Editing pattern", "Zmiana wzorca"
-
1
l.store "Editing textfilter", "Modyfikuj filtr"
-
1
l.store "Editing trackback", "Modyfikuj trackback"
-
1
l.store "Empty Fragment Cache", "Usuń bufor fragmentów"
-
1
l.store "Enable plugins", "Aktywować wtyczki"
-
1
l.store "Explicit", "Tylko dla dorosłych"
-
1
l.store "Extended Content", "Treść rozszerzona"
-
1
l.store "Feedback Search", "Przeszukaj komentarze"
-
1
l.store "Files", "Pliki"
-
1
l.store "Filters", "Filtry"
-
1
l.store "General Settings", "Ustawienia ogólne"
-
1
l.store "HTML was cleared", "HTML opróżniono"
-
1
l.store "IP", "Adres IP"
-
1
l.store "Jabber", "Jabber"
-
1
l.store "Jabber account", "Konto Jabber"
-
1
l.store "Jabber account to use when sending Jabber notifications", "Konto Jabber do wysyłania powiadomień"
-
1
l.store "Jabber password", "Hasło konta Jabber"
-
1
l.store "Key Words", "Słowa kluczowe"
-
1
l.store "Last updated", "Ostatnio zmieniany"
-
1
l.store "Limit to unconfirmed", "Pokaż niepotwierdzone"
-
1
l.store "Limit to unconfirmed spam", "Pokaż niepotwierdzony spam"
-
1
l.store "Location", "Lokacja"
-
1
l.store "Log out", "Wyloguj"
-
1
l.store "Logoff", "Wyloguj"
-
1
l.store "Macro Filter Help", "Pomoc makr filtrów"
-
1
l.store "Macros", "Makra"
-
1
l.store "Manage", "Zarządzaj"
-
1
l.store "Manage Articles", "Zarządzaj artykułami"
-
1
l.store "Manage Categories", "Zarządzaj kategoriami"
-
1
l.store "Manage Pages", "Zarządzaj stronami"
-
1
l.store "Manage Resources", "Zarządzaj zasobami"
-
1
l.store "Manage Text Filters", "Zarządzaj filtrami tekstu"
-
1
l.store "Markup", "Znaczniki"
-
1
l.store "Markup type", "Typ znaczników"
-
1
l.store "MetaData", "Metadane"
-
1
l.store "Metadata was successfully removed.", "Metadane zostały pomyślnie usunięte."
-
1
l.store "New post", "Nowy wpis"
-
1
l.store "Not published by Apple", "Nie publikowane przez Apple"
-
1
l.store "Notification", "Powiadomienia"
-
1
l.store "Notified", "Powiadamiony"
-
1
l.store "Notify on new articles", "Powiadamiaj o nowych artykułach"
-
1
l.store "Notify on new comments", "Powiadamiaj o nowych komentarzach"
-
1
l.store "Notify via email", "Powiadamiaj emailem"
-
1
l.store "Number of Articles", "Liczba artykułów"
-
1
l.store "Number of Comments", "Liczba komentarzy"
-
1
l.store "Offline", "Offline"
-
1
l.store "Older posts", "Starsze wpisy"
-
1
l.store "Optional Extended Content", "Opcjonalna treść rozszerzona"
-
1
l.store "Optional Name", "Nazwa opcjonalna"
-
1
l.store "Optional extended content", "Opcjonalna treść rozszerzona"
-
1
l.store "Page Body", "Nagłówek strony"
-
1
l.store "Page Content", "Treść strony"
-
1
l.store "Page Options", "Opcje strony"
-
1
l.store "Parameters", "Parametry"
-
1
l.store "Password Confirmation", "Potwierdzenie hasła"
-
1
l.store "Pattern", "Wzorzec"
-
1
l.store "Pictures from", "Zdjęcia z"
-
1
l.store "Post", "Wpis"
-
1
l.store "Post title", "Tytuł wpisu"
-
1
l.store "Post-processing filters", "Filtr post-process"
-
1
l.store "Posted at", "Data publikacji"
-
1
l.store "Posted date", "Data publikacji"
-
1
l.store "Posts", "Wpisy"
-
1
l.store "Preview Article", "Podgląd artykułu"
-
1
l.store "Read", "Odczyt"
-
1
l.store "Read more", "Czytaj dalej"
-
1
l.store "Rebuild cached HTML", "Przebuduj bufor HTML"
-
1
l.store "Recent comments", "Ostatnie komentarze"
-
1
l.store "Recent trackbacks", "Ostatnie trackbacki"
-
1
l.store "Regex", "Wyrażenie regularne"
-
1
l.store "Remove iTunes Metadata", "Usuń metadane iTunes"
-
1
l.store "Resource MetaData", "Metadane zasobu"
-
1
l.store "Resource Settings", "Ustawienia zasobów"
-
1
l.store "Save Settings", "Zapisz ustawienia"
-
1
l.store "See help text for this filter", "Zobacz pomoc dla tego filtra"
-
1
l.store "Set iTunes metadata for this enclosure", "Ustaw metadane iTunes"
-
1
l.store "Setting for channel", "Ustawienia kanału"
-
1
l.store "Settings", "Ustawienia"
-
1
l.store "Show Help", "Pomoc"
-
1
l.store "Show this article", "Pokaż artykuł"
-
1
l.store "Show this category", "Pokaż tą kategorię"
-
1
l.store "Show this comment", "Pokaż komentarz"
-
1
l.store "Show this page", "Pokaż tą stronę"
-
1
l.store "Show this pattern", "Pokaż ten wzorzec"
-
1
l.store "Show this user", "Pokazuj tego użytkownika"
-
1
l.store "Spam Protection", "Ochrona przed spamem"
-
1
l.store "Spam protection", "Ochrona przed spamem"
-
1
l.store "String", "Ciąg znaków"
-
1
l.store "Subtitle", "Podtytuł"
-
1
l.store "Summary", "Streszczenie"
-
1
l.store "Text Filter Details", "Szczegóły filtra tekstu"
-
1
l.store "Text Filters", "Filtry tekstu"
-
1
l.store "Textfilter", "Filtr tekstu"
-
1
l.store "The below settings act as defaults when you choose to publish an enclosure with iTunes metadata", "Poniższe ustawienia podawane są jako domyślne jeśli publikacja będzie zawierać metadane iTunes"
-
1
l.store "Things you can do", "Dostępne działania"
-
1
l.store "This option let you choose between the simple admin interface or the complete one, displaying much more options and therefore more complicated to use. For advanced users only!", "Ta opcja pozwala wybrać prosty lub pełny panel administracyjny. Pełny panel administracyjny zawiera więcej opcji przez co jest bardziej skomplikowany. Tylko dla zaawansowanych użytkowników!"
-
1
l.store "Toggle Extended Content", "Przełącz treść rozszerzoną"
-
1
l.store "Type", "Typ"
-
1
l.store "Typo admin", "administracja Typo"
-
1
l.store "Typo documentation", "Oficjalna dokumentacja Typo"
-
1
l.store "Update your profile or change your password", "Zaktualizować profil lub zmienić hasło"
-
1
l.store "Upload a new File", "Wyślij nowy plik"
-
1
l.store "Upload a new Resource", "Wyślij nowy zasób"
-
1
l.store "Uploaded", "Załadowany"
-
1
l.store "User's articles", "Artykuły użytkownika"
-
1
l.store "View", "Obejrzyj"
-
1
l.store "View article on your blog", "Obejrzyj artykuł na blogu"
-
1
l.store "View comment on your blog", "Obejrzyj komentarz na blogu"
-
1
l.store "View page on your blog", "Zaprezentuj stronę na blogu"
-
1
l.store "What can you do ?", "Co możesz zrobić?"
-
1
l.store "Which settings group would you like to edit", "Którą grupę ustawień chcesz zmodyfikować"
-
1
l.store "Write Page", "Utworzyć stronę"
-
1
l.store "Write Post", "Utworzyć wpis"
-
1
l.store "Write a Page", "Utwórz stronę"
-
1
l.store "Write an Article", "Utwórz artykuł"
-
1
l.store "XML Syndication", "Subskrypcja XML"
-
1
l.store "You are now logged out of the system", "Wylogowano z systemu"
-
1
l.store "You can add it to the following categories", "Możesz dodać go do następujących kategorii"
-
1
l.store "You can optionally disable non-Ajax comments. Typo will always use Ajax for comment submission if Javascript is enabled, so non-Ajax comments are either from spammers or users without Javascript.", "Można opcjonalnie wyłączyć nie-Ajaxowe komentarze. Typo zawsze używa technologii Ajax do przesyłania komentarzy - o ile Javascript jest włączony. Przeważnie komentarze nie-Ajaxowe pochodzą od spamerów lub użytkowników bez Javascript."
-
1
l.store "add new", "dodaj nową"
-
1
l.store "by", "przez"
-
1
l.store "log out", "wyloguj"
-
1
l.store "no ", "brak "
-
1
l.store "no categories", "brak kategori"
-
1
l.store "no tags", "brak tagów"
-
1
l.store "no users", "brak użytkowników"
-
1
l.store "on", "na"
-
1
l.store "seperate with spaces", "rozdziel spacjami"
-
1
l.store "via email", "emailem"
-
1
l.store "with %s Famfamfam iconset %s", "z %s ze zbioru ikon Famfamfam %s"
-
1
l.store "your blog", "Twój blog"
-
end
-
# coding: utf-8
-
1
Localization.define("ro_RO") do |l|
-
-
# app/controllers/accounts_controller.rb
-
1
l.store "Login successful", ""
-
1
l.store "Login unsuccessful", ""
-
1
l.store "An email has been successfully sent to your address with your new password", ""
-
1
l.store "Oops, something wrong just happened", ""
-
1
l.store "Successfully logged out", ""
-
1
l.store "login", ""
-
1
l.store "signup", ""
-
1
l.store "Recover your password", ""
-
-
# app/controllers/admin/categories_controller.rb
-
1
l.store "Category was successfully saved.", ""
-
1
l.store "Category could not be saved.", ""
-
-
# app/controllers/admin/content_controller.rb
-
1
l.store "Error, you are not allowed to perform this action", ""
-
1
l.store "Preview", ""
-
1
l.store "Article was successfully created", ""
-
1
l.store "Article was successfully updated.", ""
-
-
# app/controllers/admin/feedback_controller.rb
-
1
l.store "Deleted", ""
-
1
l.store "Not found", ""
-
1
l.store "Deleted %d item(s)", ""
-
1
l.store "Marked %d item(s) as Ham", ""
-
1
l.store "Marked %d item(s) as Spam", ""
-
1
l.store "Confirmed classification of %s item(s)", ""
-
1
l.store "Not implemented", ""
-
1
l.store "All spam have been deleted", ""
-
1
l.store "Comment was successfully created.", ""
-
1
l.store "Comment was successfully updated.", ""
-
-
# app/controllers/admin/pages_controller.rb
-
1
l.store "Page was successfully created.", ""
-
1
l.store "Page was successfully updated.", ""
-
-
# app/controllers/admin/profiles_controller.rb
-
1
l.store "User was successfully updated.", ""
-
-
# app/controllers/admin/resources_controller.rb
-
1
l.store "Error occurred while updating Content Type.", ""
-
1
l.store "complete", ""
-
1
l.store "File uploaded: ", ""
-
1
l.store "Unable to upload", ""
-
1
l.store "Metadata was successfully updated.", ""
-
1
l.store "Not all metadata was defined correctly.", ""
-
1
l.store "Content Type was successfully updated.", ""
-
-
# app/controllers/admin/settings_controller.rb
-
1
l.store "Please review and save the settings before continuing", ""
-
1
l.store "config updated.", ""
-
-
# app/controllers/admin/sidebar_controller.rb
-
1
l.store "It seems something went wrong. Maybe some of your sidebars are actually missing and you should either reinstall them or remove them manually", ""
-
-
# app/controllers/admin/tags_controller.rb
-
1
l.store "Tag was successfully updated.", ""
-
-
# app/controllers/admin/themes_controller.rb
-
1
l.store "Theme changed successfully", ""
-
1
l.store "You are not authorized to open this file", ""
-
1
l.store "File saved successfully", ""
-
1
l.store "Unable to write file", ""
-
-
# app/controllers/admin/users_controller.rb
-
1
l.store "User was successfully created.", ""
-
-
# app/controllers/application_controller.rb
-
1
l.store "Localization.rtl", ""
-
-
# app/controllers/articles_controller.rb
-
1
l.store "No posts found...", ""
-
1
l.store "Archives for", ""
-
1
l.store "Archives for ", ""
-
1
l.store ", Articles for ", ""
-
-
# app/controllers/grouping_controller.rb
-
1
l.store "page", ""
-
1
l.store "everything about", ""
-
-
# app/helpers/admin/base_helper.rb
-
1
l.store "Cancel", "Anulare"
-
1
l.store "Store", ""
-
1
l.store "Delete", "Ștergere"
-
1
l.store "delete", ""
-
1
l.store "Delete content", ""
-
1
l.store "Are you sure?", ""
-
1
l.store "Please select", ""
-
1
l.store "There are no %s yet. Why don't you start and create one?", ""
-
1
l.store "or", "sau"
-
1
l.store "Save", "Salvează"
-
1
l.store "Edit", "Editare"
-
1
l.store "Show", ""
-
1
l.store "Published", "Publicat"
-
1
l.store "Unpublished", ""
-
1
l.store "Show help on Typo macros", ""
-
1
l.store "Back to overview", ""
-
1
l.store "Name", "Nume"
-
1
l.store "Description", "Descriere"
-
1
l.store "Tag", ""
-
-
# app/helpers/admin/categories_helper.rb
-
1
l.store "no articles", ""
-
1
l.store "1 article", ""
-
1
l.store "%d articles", ""
-
-
# app/helpers/admin/content_helper.rb
-
1
l.store "Destroy this draft", ""
-
-
# app/helpers/admin/feedback_helper.rb
-
1
l.store "Show conversation", ""
-
1
l.store "Flag as %s", ""
-
-
# app/helpers/application_helper.rb
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M:%%S GMT", ""
-
1
l.store "%%d. %%b", ""
-
1
l.store "%d comments", ""
-
1
l.store "no comments", "fără comentarii"
-
1
l.store "1 comment", ""
-
1
l.store "no trackbacks", "fără retrolegături"
-
1
l.store "1 trackback", ""
-
1
l.store "%d trackbacks", ""
-
-
# app/helpers/content_helper.rb
-
1
l.store "Posted in", ""
-
1
l.store "Tags", ""
-
1
l.store "no posts", ""
-
1
l.store "1 post", ""
-
1
l.store "%d posts", ""
-
-
# app/models/article.rb
-
1
l.store "Original article writen by", ""
-
1
l.store "and published on", ""
-
1
l.store "direct link to this article", ""
-
1
l.store "If you are reading this article elsewhere than", ""
-
1
l.store "it has been illegally reproduced and without proper authorization", ""
-
-
# app/models/blog.rb
-
1
l.store "You need a permalink format with an identifier : %%month%%, %%year%%, %%day%%, %%title%%", ""
-
1
l.store "Can't end in .rss or .atom. These are reserved to be used for feed URLs", ""
-
-
# app/models/feedback/states.rb
-
1
l.store "Unclassified", ""
-
1
l.store "Just Presumed Ham", ""
-
1
l.store "Ham?", ""
-
1
l.store "Just Marked As Ham", ""
-
1
l.store "Ham", ""
-
1
l.store "Spam?", ""
-
1
l.store "Just Marked As Spam", ""
-
1
l.store "Spam", ""
-
-
# app/views/accounts/login.html.erb
-
1
l.store "I've lost my password", ""
-
1
l.store "Login", "Login"
-
1
l.store "Password", "Parola"
-
1
l.store "Remember me", ""
-
1
l.store "Submit", ""
-
1
l.store "Back to ", ""
-
-
# app/views/accounts/recover_password.html.erb
-
1
l.store "Username or email", ""
-
-
# app/views/accounts/signup.html.erb
-
1
l.store "Create an account", ""
-
1
l.store "Username", "Utilizator"
-
1
l.store "Email", "Email"
-
1
l.store "Signup", "Înregistrare"
-
-
# app/views/admin/categories/_categories.html.erb
-
1
l.store "Title", "Titlu"
-
1
l.store "Reorder", "Ordonează"
-
1
l.store "Sort alphabetically", "Ordonează alfabetic"
-
-
# app/views/admin/categories/_form.html.erb
-
1
l.store "Keywords", ""
-
-
# app/views/admin/categories/destroy.html.erb
-
1
l.store "Are you sure you want to delete the category ", "Ești sigur că dorești să ștergi această categorie"
-
1
l.store "Delete this category", "Șterge această categorie"
-
1
l.store "Categories", ""
-
-
# app/views/admin/categories/index.html.erb
-
1
l.store "New Category", ""
-
-
# app/views/admin/categories/new.html.erb
-
1
l.store "%s Category", ""
-
-
# app/views/admin/categories/reorder.html.erb
-
1
l.store "(Done)", "(Gata)"
-
-
# app/views/admin/content/_attachment.html.erb
-
1
l.store "Remove", "Șterge"
-
1
l.store "Currently this article has the following resources", "Resursele disponibile acestui articol sînt"
-
1
l.store "You can associate the following resources", "Puteți asocia următoarele resurse"
-
1
l.store "Really delete attachment", "Ești sigur că dorești să ștergi atașamentul"
-
1
l.store "Add Another Attachment", "Adaugă un nou atașament"
-
-
# app/views/admin/content/_drafts.html.erb
-
1
l.store "Drafts", ""
-
-
# app/views/admin/content/_form.html.erb
-
1
l.store "Publish settings", ""
-
1
l.store "Allow comments", "Se permit comentarii"
-
1
l.store "Allow trackbacks", "Se permit retrolegături"
-
1
l.store "Password:", ""
-
1
l.store "Publish", "Publică"
-
1
l.store "Excerpt", ""
-
1
l.store "Excerpts are posts summaries that are shown on your blog homepage only but won’t appear on the post itself", ""
-
1
l.store "Uploads", ""
-
1
l.store "Post settings", ""
-
1
l.store "Publish at", "Publică la"
-
1
l.store "Permalink", "Legătură permanentă"
-
1
l.store "Article filter", "Filtru pentru articole"
-
1
l.store "Save as draft", ""
-
-
# app/views/admin/content/destroy.html.erb
-
1
l.store "Are you sure you want to delete this article", "Ești sigur că dorești ștergerea acestui articol"
-
1
l.store "Delete this article", "Șterge acest articol"
-
1
l.store "Articles", ""
-
-
# app/views/admin/content/index.html.erb
-
1
l.store "New Article", ""
-
1
l.store "Search articles that contain ...", ""
-
1
l.store "Search", ""
-
1
l.store "Author", "Autor"
-
1
l.store "Date", ""
-
1
l.store "Feedback", ""
-
1
l.store "Filter", ""
-
1
l.store "Manage articles", ""
-
-
# app/views/admin/dashboard/_comments.html.erb
-
1
l.store "Latest Comments", ""
-
1
l.store "No comments yet", ""
-
1
l.store "By %s on %s", ""
-
-
# app/views/admin/dashboard/_inbound.html.erb
-
1
l.store "Inbound links", ""
-
1
l.store "No one made a link to you yet", ""
-
1
l.store " made a link to you saying ", ""
-
1
l.store "You have no internet connection", ""
-
-
# app/views/admin/dashboard/_overview.html.erb
-
1
l.store "This place gives you a quick overview of what happens on your Typo blog and what you can do. Maybe will you want to %s, %s or %s.", ""
-
1
l.store "update your profile or change your password", ""
-
1
l.store "You can also do a bit of design, %s or %s.", ""
-
1
l.store "change your blog presentation", ""
-
1
l.store "enable plugins", ""
-
1
l.store "write a post", ""
-
1
l.store "write a page", ""
-
-
# app/views/admin/dashboard/_popular.html.erb
-
1
l.store "Most popular", ""
-
1
l.store "Nothing to show yet", ""
-
-
# app/views/admin/dashboard/_posts.html.erb
-
1
l.store "Latest Posts", ""
-
1
l.store "No posts yet, why don't you start and write one", ""
-
-
# app/views/admin/dashboard/_typo_dev.html.erb
-
1
l.store "Latest news from the Typo development blog", ""
-
1
l.store "Oh no, nothing new", ""
-
-
# app/views/admin/dashboard/_welcome.html.erb
-
1
l.store "Welcome back, %s!", ""
-
1
l.store "%d articles and %d comments were posted since your last connexion", ""
-
1
l.store "You're running Typo %s", ""
-
1
l.store "Total posts : %d", ""
-
1
l.store "Your posts : %d", ""
-
1
l.store "Total comments : %d", ""
-
1
l.store "Spam comments : %d", ""
-
-
# app/views/admin/feedback/_button.html.erb
-
1
l.store "Select action", ""
-
1
l.store "Delete Checked Items", ""
-
1
l.store "Delete all spam", ""
-
1
l.store "Mark Checked Items as Spam", ""
-
1
l.store "Mark Checked Items as Ham", ""
-
1
l.store "All comments", ""
-
1
l.store "Limit to ham", ""
-
1
l.store "Unapproved comments", ""
-
1
l.store "Limit to spam", "Doar spam"
-
-
# app/views/admin/feedback/_form.html.erb
-
1
l.store "Add a comment", ""
-
1
l.store "Url", "Adresa"
-
-
# app/views/admin/feedback/_spam.html.erb
-
1
l.store "This comment by <strong>%s</strong> was flagged as spam, %s?", ""
-
-
# app/views/admin/feedback/article.html.erb
-
1
l.store "Comments for %s", ""
-
1
l.store "Status", "Status"
-
1
l.store "Comment Author", ""
-
1
l.store "Comment", ""
-
-
# app/views/admin/feedback/edit.html.erb
-
1
l.store "Comments for", "Comentariile la"
-
-
# app/views/admin/feedback/index.html.erb
-
1
l.store "Search Comments and Trackbacks that contain", ""
-
1
l.store "Article", ""
-
-
# app/views/admin/pages/_form.html.erb
-
1
l.store "Online", "Online"
-
1
l.store "Page settings", ""
-
1
l.store "Permanent link", ""
-
-
# app/views/admin/pages/destroy.html.erb
-
1
l.store "Pages","Pagini"
-
1
l.store "Are you sure you want to delete the page", "Ești sigur că dorești să ștergi această pagină"
-
1
l.store "Delete this page", "Șterge această pagină"
-
-
# app/views/admin/pages/index.html.erb
-
1
l.store "New Page", ""
-
1
l.store "Manage pages", ""
-
-
# app/views/admin/profiles/index.html.erb
-
1
l.store "Your profile", ""
-
-
# app/views/admin/resources/_mime_edit.html.erb
-
1
l.store "Content Type", "Tip de conținut (content type)"
-
-
# app/views/admin/resources/_pages.html.erb
-
1
l.store "Previous page", "Pagina anterioară"
-
1
l.store "Next page", "Pagina următoare"
-
-
# app/views/admin/resources/_upload.html.erb
-
1
l.store "Upload a File to your Site", "Încarcă un fișier în site"
-
1
l.store "File", ""
-
1
l.store "Upload", "Încarcă"
-
-
# app/views/admin/resources/destroy.html.erb
-
1
l.store "Are you sure you want to delete this file", "Ești sigur că dorești să ștergi acest fișier"
-
1
l.store "Delete this file from the webserver?", "Ștergi acest fișier de pe server?"
-
1
l.store "File Uploads", "Încărcări de fișiere"
-
-
# app/views/admin/resources/images.html.erb
-
1
l.store "Thumbnail", ""
-
1
l.store "File Size", "Dimensiunea fișierului"
-
1
l.store "Images", ""
-
1
l.store "right-click for link", ""
-
-
# app/views/admin/resources/index.html.erb
-
1
l.store "Filename", "Nume de fișier"
-
-
# app/views/admin/settings/_submit.html.erb
-
1
l.store "Update settings", ""
-
-
# app/views/admin/settings/feedback.html.erb
-
1
l.store "Enable comments by default", "Implicit comentariile să fie active"
-
1
l.store "Enable Trackbacks by default", "Implicit retrolegăturile să fie active"
-
1
l.store "Enable feedback moderation", "Activează moderarea comentariilor"
-
1
l.store "You can enable site wide feeback moderation. If you do so, no comment or trackback will appear on your blog unless you validate it", ""
-
1
l.store "Comments filter", "Filtru pentru comentarii"
-
1
l.store "Enable gravatars", "Activează gravataruri"
-
1
l.store "Show your email address", "Arată adresa ta de email"
-
1
l.store "Notifications", ""
-
1
l.store "Typo can notify you when new articles or comments are posted", "Typo te poate alerta la publicarea de noi articole sau comentarii"
-
1
l.store "Source Email", "Expeditor email"
-
1
l.store "Email address used by Typo to send notifications", "Adresa email folosită de Typo pentru a trimite alerte prin email"
-
1
l.store "Enabling spam protection will make typo compare the IP address of posters as well as the contents of their posts against local and remote blacklists. Good defense against spam bots", "La activarea protecției anti-spam, Typo va compara adresa IP a utilizatorului care publică un articol, cît și conținutul articolului publicat, cu niște liste negre locale sau din altă parte. Reprezintă o bună apărare împotriva unui spam bot "
-
1
l.store "Enable spam protection", "Activează protecția anti-spam"
-
1
l.store "Akismet Key", "Cheia Akismet"
-
1
l.store "Typo can (optionally) use the %s spam-filtering service. You need to register with Akismet and receive an API key before you can use their service. If you have an Akismet key, enter it here", "Opțional, Typo poate folosi serviciul %s de filtrare spam. Trebuie să te înregistrezi la Akismet și să primești o cheie API pentru a putea folosi acest serviciu. Dacă ai deja o cheie Akismet, introdu-o aici"
-
1
l.store "Disable trackbacks site-wide", ""
-
1
l.store "This setting allows you to disable trackbacks for every article in your blog. It won't remove existing trackbacks, but it will prevent any further attempt to add a trackback anywhere on your blog.", "Această opțiune va dezactiva trimiterea de retrolegături de acum înainte. Retrolegăturile existente vor rămîne în site-uri, dar alte retrolegături nu vor mai fi posibile nicăieri in blog."
-
1
l.store "Disable comments after", "Dezactivează comentariile după "
-
1
l.store "days", "zile"
-
1
l.store "Set to 0 to never disable comments", "Comentariile nu vor fi dezactivate niciodată dacă alegi valoarea 0"
-
1
l.store "Max Links", "Număr maxim de legături"
-
1
l.store "Typo will automatically reject comments and trackbacks which contain over a certain amount of links in them", "Typo va respinge automat comentarii și retrolegături care conțin mai mult decît un anumit număr de legături"
-
1
l.store "Set to 0 to never reject comments", "Comentariile nu vor fi respinse niciodată dacă alegi valoarea 0"
-
1
l.store "Feedback settings", ""
-
-
# app/views/admin/settings/index.html.erb
-
1
l.store "Your blog", "Site"
-
1
l.store "Blog name", "Numele blogului"
-
1
l.store "Blog subtitle", "Subtitlul blogului"
-
1
l.store "Blog URL", "Adresa blogului"
-
1
l.store "Language", "Language" #Need translate
-
1
l.store "Allow users to register", ""
-
1
l.store "You can allow users to register to your blog. By default, they will register as contributors, an unpriviledged account level which grant them no rights but own a profile on the site. If you don't want users to register, you can thus add them by yourself in the users part of this admin.", ""
-
1
l.store "Items to display in admin lists", ""
-
1
l.store "Publishing options", ""
-
1
l.store "Display", "Afișează"
-
1
l.store "articles on my homepage by default", "articole implicit în pagina principală"
-
1
l.store "articles in my news feed by default", "articole implicit în RSS"
-
1
l.store "Show full article on feed", "Include articole complete în RSS"
-
1
l.store "Feedburner ID", ""
-
1
l.store "General settings", "Setări generale"
-
1
l.store "You can use your Google Feedburner account instead of Typo feed URL. To enable this, fill this form with your Feedburner ID.", ""
-
-
# app/views/admin/settings/seo.html.erb
-
1
l.store "Search Engine Optimisation", ""
-
1
l.store "Format of permalink", ""
-
1
l.store "Google Analytics", ""
-
1
l.store "Google verification link", ""
-
1
l.store "Meta description", ""
-
1
l.store "Meta keywords", ""
-
1
l.store "Use RSS description", ""
-
1
l.store "Index categories", ""
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every category page, removing them from search engines and preventing duplicate content issues", ""
-
1
l.store "Index tags", ""
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every tags page, removing them from search engines and preventing duplicate content issues", ""
-
1
l.store "Robots.txt", ""
-
1
l.store "You robots.txt file is not writeable. Typo won't be able to write it", ""
-
1
l.store "Search Engine Optimization", ""
-
1
l.store "This will display", ""
-
1
l.store "at the bottom of each of your post in the RSS feed", ""
-
-
# app/views/admin/settings/update_database.html.erb
-
1
l.store "Information", "Informații"
-
1
l.store "Current database version", "Versiunea curentă a bazei de date"
-
1
l.store "New database version", "Versiunea nouă a bazei de date"
-
1
l.store "Your database supports migrations", "Baza de date poate fi actualizată"
-
1
l.store "Needed migrations", "Actualizări necesare"
-
1
l.store "You are up to date!", "Baza de date este la zi!"
-
1
l.store "Update database now", "Actualizează baza de date acum"
-
1
l.store "may take a moment", "ar putea să dureze puțin"
-
1
l.store "Database migration", "Actualizări ale bazei de date"
-
1
l.store "yes", "da"
-
1
l.store "no", "nu"
-
-
# app/views/admin/settings/write.html.erb
-
1
l.store "Send trackbacks", "Trimite retrolegături"
-
1
l.store "When publishing articles, Typo can send trackbacks to websites that you link to. This should be disabled for private blogs as it will leak non-public information to sites that you're discussing. For public blogs, there's no real point in disabling this.", "Cînd publici un articol, Typo poate trimite automat retrolegături site-urilor pe care le specifici. În cazul unui blog personal, această opțiune ar trebui dezactivată, ca să nu deconspire informații private. Dacă blogul e public, opțiunea aceasta poate rămîne activă."
-
1
l.store "URLs to ping automatically", "Site-uri de anunțat automat"
-
1
l.store "Latitude, Longitude", "Latitudine, longitudine"
-
1
l.store "your lattitude and longitude", "latitudinea și longitudinea ta"
-
1
l.store "exemple", "de pildă"
-
1
l.store "Write", "Publicare"
-
-
# app/views/admin/sidebar/_availables.html.erb
-
1
l.store "You have no plugins installed", "Niciun plugin instalat"
-
-
# app/views/admin/sidebar/_publish.html.erb
-
1
l.store "Changes published", "Schimbările au fost publicate"
-
-
# app/views/admin/sidebar/_target.html.erb
-
1
l.store "Drag some plugins here to fill your sidebar", "Trage plugin-uri aici pentru a popula bara laterală"
-
-
# app/views/admin/sidebar/index.html.erb
-
1
l.store "Drag and drop to change the sidebar items displayed on this blog. To remove items from the sidebar just click remove Changes are saved immediately, but not activated until you click the 'Publish' button", "Trage și lasă obiecte pe bara laterală pentru a o modifica în blog. Pentru a șterge obiecte din bara laterală, apasă pe 'șterge'. Modificările se salvează imediat, dar nu vor fi activate pînă cînd apeși butonul 'publică'"
-
1
l.store "Available Items", "Obiecte disponibile"
-
1
l.store "Active Sidebar items", "Obiecte utilizate"
-
1
l.store "Get more plugins", ""
-
1
l.store "Sidebar", ""
-
1
l.store "Publish changes", "Publică modificările"
-
-
# app/views/admin/tags/_form.html.erb
-
1
l.store "Display name", "Numele real"
-
-
# app/views/admin/tags/destroy.html.erb
-
1
l.store "Are you sure you want to delete the tag", ""
-
1
l.store "Delete this tag", ""
-
-
# app/views/admin/tags/edit.html.erb
-
1
l.store "Editing ", ""
-
1
l.store "Back to tags list", ""
-
-
# app/views/admin/tags/index.html.erb
-
1
l.store "Display Name", ""
-
1
l.store "Manage tags", ""
-
-
# app/views/admin/themes/catalogue.html.erb
-
1
l.store "Sorry the theme catalogue is not available", ""
-
1
l.store "Theme catalogue", ""
-
-
# app/views/admin/themes/editor.html.erb
-
1
l.store "Theme editor", ""
-
-
# app/views/admin/themes/index.html.erb
-
1
l.store "Active theme", "Tema activă"
-
1
l.store "Get more themes", ""
-
1
l.store "You can download third party themes from officially supported %s ", ""
-
1
l.store "Typogarden", ""
-
1
l.store "To install a theme you just need to upload the theme folder into your themes directory. Once a theme is uploaded, you should see it on this page.", ""
-
1
l.store "Choose a theme", "Alege o temă"
-
-
# app/views/admin/users/_form.html.erb
-
1
l.store "Account settings", ""
-
1
l.store "Password confirmation", "Confirmă parola"
-
1
l.store "Profile", ""
-
1
l.store "User's status", ""
-
1
l.store "Active", ""
-
1
l.store "Inactive", ""
-
1
l.store "Profile Settings", ""
-
1
l.store "Firstname", ""
-
1
l.store "Lastname", ""
-
1
l.store "Nickname", ""
-
1
l.store "Editor", ""
-
1
l.store "Use simple editor", ""
-
1
l.store "Use visual rich editor", ""
-
1
l.store "Send notification messages via email", "Alerte prin email"
-
1
l.store "Send notification messages when new articles are posted", "Alerte la publicarea de articole noi"
-
1
l.store "Send notification messages when comments are posted", "Alerte la publicarea de comentarii noi"
-
1
l.store "Contact Options", ""
-
1
l.store "Your site", ""
-
1
l.store "display url on public profile", ""
-
1
l.store "Your MSN", ""
-
1
l.store "display MSN ID on public profile", ""
-
1
l.store "Your Yahoo ID", ""
-
1
l.store "display Yahoo! ID on public profile", ""
-
1
l.store "Your Jabber ID", ""
-
1
l.store "display Jabber ID on public profile", ""
-
1
l.store "Your AIM id", ""
-
1
l.store "display AIM ID on public profile", ""
-
1
l.store "Your Twitter username", ""
-
1
l.store "display twitter on public profile", ""
-
1
l.store "Tell us more about you", ""
-
-
# app/views/admin/users/destroy.html.erb
-
1
l.store "Really delete user", "Ești sigur că dorești să ștergi acest utilizator"
-
1
l.store "Yes", ""
-
1
l.store "Users", ""
-
-
# app/views/admin/users/edit.html.erb
-
1
l.store "Edit User", "Editează un utilizator"
-
-
# app/views/admin/users/index.html.erb
-
1
l.store "New User", "Utilizator nou"
-
1
l.store "Comments", ""
-
1
l.store "State", ""
-
1
l.store "%s user", ""
-
-
# app/views/admin/users/new.html.erb
-
1
l.store "Add User", ""
-
-
# app/views/articles/_article.html.erb
-
1
l.store "Posted by", "Publicat de"
-
1
l.store "Continue reading", ""
-
-
# app/views/articles/_comment.html.erb
-
1
l.store "said", "a scris"
-
1
l.store "This comment has been flagged for moderator approval. It won't appear on this blog until the author approves it", "Acest comentariu a fost marcat pentru moderare. El nu va apărea în blog înainte de a fi aprobat."
-
-
# app/views/articles/_comment_box.html.erb
-
1
l.store "Your name", "Nume"
-
1
l.store "Your email", "Email"
-
1
l.store "Your message", "Comentariu"
-
1
l.store "Comment Markup Help", "Ajutor la marcare"
-
1
l.store "Preview comment", "Previzualizare"
-
1
l.store "leave url/email", ""
-
-
# app/views/articles/_comment_failed.html.erb
-
1
l.store "Oops, something wrong happened, the comment could not be saved", ""
-
-
# app/views/articles/_trackback.html.erb
-
1
l.store "From", "De la"
-
-
# app/views/articles/archives.html.erb
-
1
l.store "No articles found", "Niciun articol nu a fost găsit"
-
1
l.store "posted in", ""
-
-
# app/views/articles/comment_preview.html.erb
-
1
l.store "is about to say", "vrea să scrie"
-
-
# app/views/articles/groupings.html.erb
-
1
l.store "There are", "Sînt"
-
-
# app/views/articles/read.html.erb
-
1
l.store "Leave a response", "Comentează"
-
1
l.store "Trackbacks", ""
-
1
l.store "Use the following link to trackback from your own site", "Folosește link-ul următor pentru a realiza o retrolegătură de la site-ul tău"
-
1
l.store "RSS feed for this post", "Flux RSS pentru acest articol"
-
1
l.store "trackback uri", "URL pentru retrolegătură"
-
1
l.store "Comments are disabled", "Comentariile sînt dezactivate"
-
-
# app/views/authors/show.html.erb
-
1
l.store "Web site:", ""
-
1
l.store "MSN:", ""
-
1
l.store "Yahoo:", ""
-
1
l.store "Jabber:", ""
-
1
l.store "AIM:", ""
-
1
l.store "Twitter:", ""
-
1
l.store "About %s", ""
-
1
l.store "This author has not published any article yet", ""
-
-
# app/views/comments/show.html.erb
-
1
l.store "This comment has been flagged for moderator approval.", ""
-
-
# app/views/layouts/administration.html.erb
-
1
l.store "%s »", ""
-
1
l.store "is proudly powered by", ""
-
1
l.store "Dashboard", ""
-
-
# app/views/setup/index.html.erb
-
1
l.store "Welcome", ""
-
1
l.store "Welcome to your %s blog setup. Just fill in your blog title and your email, and Typo will take care of everything else", ""
-
-
# app/views/shared/_confirm.html.erb
-
1
l.store "Congratulation!", ""
-
1
l.store "You have successfully signed up", ""
-
1
l.store "<strong>Login:</strong> %s", ""
-
1
l.store "<strong>Password:</strong> %s", ""
-
1
l.store "Don't lose the mail sent at %s or you won't be able to login anymore", ""
-
1
l.store "Proceed to %s", ""
-
1
l.store "admin", ""
-
-
# app/views/shared/_search.html.erb
-
1
l.store "Live Search", ""
-
-
# test/mocks/themes/typographic/layouts/default.html.erb
-
1
l.store "Powered by %s", ""
-
1
l.store "Designed by %s ", ""
-
-
# test/mocks/themes/typographic/views/articles/_article.html.erb
-
1
l.store "Continue reading...", ""
-
1
l.store "This entry was posted on %s", ""
-
1
l.store "and %s", ""
-
1
l.store "You can follow any response to this entry through the %s", ""
-
1
l.store "Atom feed", ""
-
1
l.store "You can leave a %s", ""
-
1
l.store "or a %s from your own site", ""
-
1
l.store "Read full article", ""
-
1
l.store "comment", ""
-
1
l.store "trackback", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment.html.erb
-
1
l.store "later", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment_form.html.erb
-
1
l.store "Leave a comment", ""
-
1
l.store "Name %s", ""
-
1
l.store "enabled", ""
-
1
l.store "never displayed", ""
-
1
l.store "Website", ""
-
1
l.store "Textile enabled", ""
-
1
l.store "Markdown enabled", ""
-
1
l.store "required", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment_list.html.erb
-
1
l.store "No comments", ""
-
-
# test/mocks/themes/typographic/views/shared/_search.html.erb
-
1
l.store "Searching", ""
-
-
# themes/dirtylicious/layouts/default.html.erb
-
1
l.store "Home", ""
-
1
l.store "About", ""
-
1
l.store "Designed by %s ported to typo by %s ", ""
-
-
# themes/scribbish/layouts/default.html.erb
-
1
l.store "styled with %s", ""
-
-
# themes/scribbish/views/articles/_article.html.erb
-
1
l.store "Meta", ""
-
1
l.store "permalink", ""
-
-
# themes/true-blue-3/helpers/theme_helper.rb
-
1
l.store "You are here: ", ""
-
1
l.store "%d comment", ""
-
-
# themes/true-blue-3/views/articles/_article.html.erb
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M", ""
-
-
# themes/true-blue-3/views/articles/_comment.html.erb
-
1
l.store "By", ""
-
1
l.store "later:", ""
-
-
# themes/true-blue-3/views/articles/_comment_form.html.erb
-
1
l.store "Email address", ""
-
1
l.store "Your website", ""
-
-
# themes/true-blue-3/views/articles/read.html.erb
-
1
l.store "If you liked this article you can %s", ""
-
1
l.store "add me to Twitter", ""
-
1
l.store "Trackbacks for", "Retrolegături pentru"
-
-
# themes/true-blue-3/views/articles/search.html.erb
-
1
l.store "Search results for:", ""
-
-
# themes/true-blue-3/views/categories/index.html.erb
-
1
l.store "Read all articles in %s", ""
-
-
# themes/true-blue-3/views/categories/show.html.erb
-
1
l.store "Previous", ""
-
1
l.store "Next", ""
-
-
# vendor/plugins/archives_sidebar/views/content.rhtml
-
1
l.store "Archives", ""
-
-
# vendor/plugins/authors_sidebar/views/content.rhtml
-
1
l.store "Authors", ""
-
-
# vendor/plugins/xml_sidebar/views/content.rhtml
-
1
l.store "Syndicate", ""
-
1
l.store "Category %s", ""
-
1
l.store "Tag %s", ""
-
-
# Obsolete translations
-
1
l.store "%d Articles", ["Articol", "%d Articole"]
-
1
l.store "%d Categories", ["Categorie", "%d Categorii"]
-
1
l.store "%d Comments", ["Comentariu", "%d Comentarii"]
-
1
l.store "%d Tags", ["Cuvînt cheie", "%d Cuvinte cheie"]
-
1
l.store "%d Trackbacks", ["Retrolegătură", "%d Retrolegături"]
-
1
l.store "%d Users", ["Utilizator", "%d Utilizatori"]
-
1
l.store "Action", "Acțiuni"
-
1
l.store "Activate", "Activează"
-
1
l.store "Add MetaData", "Adaugă metainformații"
-
1
l.store "Add category", "Adaugă o categorie"
-
1
l.store "Add new user", "Adaugă un utilizator nou"
-
1
l.store "Add pattern", "Adăugare model"
-
1
l.store "Allow non-ajax comments", "Permite comentarii non-AJAX"
-
1
l.store "Are you sure you want to delete this filter", "Ești sigur că dorești să ștergi acest filtru"
-
1
l.store "Are you sure you want to delete this item?", "Ești sigur că dorești să ștergi acest element?"
-
1
l.store "Article Attachments", "Atașamentele articolului"
-
1
l.store "Article Body", "Corpul articolului"
-
1
l.store "Article Content", "Conținutul articolului"
-
1
l.store "Article Options", "Opțiunile articolului"
-
1
l.store "Articles in", "Articole în"
-
1
l.store "Attachments", "Atașamente"
-
1
l.store "Back to the blog", "Înapoi la blog"
-
1
l.store "Blacklist", "Lista neagră"
-
1
l.store "Blacklist Patterns", "Lista neagră"
-
1
l.store "Blog settings", "Setările blogului"
-
1
l.store "Body", "Conținut"
-
1
l.store "Cache", "Cache"
-
1
l.store "Category title", "Numele categoriei"
-
1
l.store "Choose password", "Parola"
-
1
l.store "Comments and Trackbacks for", "Comentarii și retrolegături pentru"
-
1
l.store "Confirm password", "Confirmați parola"
-
1
l.store "Copyright Information", "Drepturi"
-
1
l.store "Create new Blacklist", "Crearea unei noi liste negre"
-
1
l.store "Create new category", "Creează o categorie nouă"
-
1
l.store "Create new page", "Creează o pagină nouă"
-
1
l.store "Create new text filter", "Creează un nou filtru de text"
-
1
l.store "Creating comment", "Creează un comentariu"
-
1
l.store "Creating text filter", "Crearea unui nou filtru de text"
-
1
l.store "Creating trackback", "Crearea unei retrolegături"
-
1
l.store "Creating user", "Crearea unui nou utilizator"
-
1
l.store "Currently this article is listed in following categories", "Acest articol aparține următoarelor categorii"
-
1
l.store "Customize Sidebar", "Personalizează bara laterală"
-
1
l.store "Delete this filter", "Șterge acest filtru"
-
1
l.store "Design", "Design"
-
1
l.store "Desired login", "Nume de utilizator"
-
1
l.store "Discuss", "Discuții"
-
1
l.store "Do you want to go to your blog?", "Doriți să vizitați pagina principală a blogului?"
-
1
l.store "Duration", "Durată"
-
1
l.store "Edit Article", "Editarea unui articol"
-
1
l.store "Edit MetaData", "Editează metainformații"
-
1
l.store "Edit this article", "Editează acest articol"
-
1
l.store "Edit this category", "Editează această categorie"
-
1
l.store "Edit this filter", "Editeaza acest filtru"
-
1
l.store "Edit this page", "Editează această pagină"
-
1
l.store "Edit this trackback", "Editează această retrolegătură"
-
1
l.store "Editing User", "Editarea unui utilizator"
-
1
l.store "Editing category", "Editarea categoriei"
-
1
l.store "Editing comment", "Editarea unui comentariu"
-
1
l.store "Editing page", "Editarea paginii"
-
1
l.store "Editing pattern", "Editarea modelului"
-
1
l.store "Editing textfilter", "Editarea unui filtru"
-
1
l.store "Editing trackback", "Editarea retrolegăturii"
-
1
l.store "Empty Fragment Cache", "Golește cache"
-
1
l.store "Explicit", "Conținut explicit"
-
1
l.store "Extended Content", "Conținutul extins"
-
1
l.store "Feedback Search", "Caută prin comentarii"
-
1
l.store "Filters", "Filtre"
-
1
l.store "General Settings", "Setări generale"
-
1
l.store "IP", "Adresa IP"
-
1
l.store "Jabber", "Jabber"
-
1
l.store "Jabber account", "Cont Jabber"
-
1
l.store "Jabber account to use when sending Jabber notifications", "Contul de Jabber folosit pentru a trimite alerte prin Jabber"
-
1
l.store "Jabber password", "Parola Jabber"
-
1
l.store "Key Words", "Cuvinte cheie"
-
1
l.store "Last updated", "Ultima modificare"
-
1
l.store "Limit to unconfirmed", "Doar neconfirmate"
-
1
l.store "Limit to unconfirmed spam", "Doar spam neconfirmat"
-
1
l.store "Location", "Adresa"
-
1
l.store "Logoff", "Ieșire"
-
1
l.store "Macro Filter Help", "Ajutor la filtrele macro"
-
1
l.store "Macros", "Macro-uri"
-
1
l.store "Manage", "Articole"
-
1
l.store "Manage Articles", "Listează articolele"
-
1
l.store "Manage Categories", "Listează categoriile"
-
1
l.store "Manage Pages", "Listează paginile"
-
1
l.store "Manage Resources", "Listează resursele"
-
1
l.store "Manage Text Filters", "Configurează filtrele de text"
-
1
l.store "Markup", "Marcaj"
-
1
l.store "Markup type", "Tip de marcaj"
-
1
l.store "MetaData", "Metainformații"
-
1
l.store "Not published by Apple", "Nepublicat de Apple"
-
1
l.store "Notification", "Notificări"
-
1
l.store "Notified", "Alertă trimisă"
-
1
l.store "Notify on new articles", "Primește alerte la publicarea de articole noi"
-
1
l.store "Notify on new comments", "Primește alerte la publicarea de comentarii noi"
-
1
l.store "Notify via email", "Primește alerte prin email"
-
1
l.store "Number of Articles", "Număr de articole"
-
1
l.store "Number of Comments", "Număr de comentarii"
-
1
l.store "Offline", "Offline"
-
1
l.store "Older posts", "Articole mai vechi"
-
1
l.store "Optional Name", "Nume opțional"
-
1
l.store "Page Body", "Conținutul paginii"
-
1
l.store "Page Options", "Opțiuni ale paginii"
-
1
l.store "Parameters", "Parametri"
-
1
l.store "Password Confirmation", "Confirmă parola"
-
1
l.store "Pattern", "Model"
-
1
l.store "Pictures from", "Imagini de la"
-
1
l.store "Post title", "Titlul articolului"
-
1
l.store "Post-processing filters", "Filtre de post-procesare"
-
1
l.store "Posted at", "Data publicării"
-
1
l.store "Posted date", "Publicat la"
-
1
l.store "Preview Article", "Previzualizarea unui articol"
-
1
l.store "Read", "Afișare"
-
1
l.store "Read more", "Citește mai departe"
-
1
l.store "Rebuild cached HTML", "Reconstruiește paginile din cache"
-
1
l.store "Recent comments", "Comentarii recente"
-
1
l.store "Recent trackbacks", "Retrolegături recente"
-
1
l.store "Regex", "Expresie regulată"
-
1
l.store "Remove iTunes Metadata", "Șterge metainformațiile iTunes"
-
1
l.store "Resource MetaData", "Metainformații ale resursei"
-
1
l.store "Resource Settings", "Setări ale resurselor"
-
1
l.store "Save Settings", "Salvează setările"
-
1
l.store "See help text for this filter", "Ajutor la acest filtru"
-
1
l.store "Set iTunes metadata for this enclosure", "Setează metainformații iTunes"
-
1
l.store "Setting for channel", "Setări de canal"
-
1
l.store "Settings", "Configurare"
-
1
l.store "Show Help", "Ajutor"
-
1
l.store "Show this article", "Arată acest articol"
-
1
l.store "Show this category", "Afișează această categorie"
-
1
l.store "Show this comment", "Arată acest comentariu"
-
1
l.store "Show this page", "Arată această pagină"
-
1
l.store "Show this pattern", "Afișează acest model"
-
1
l.store "Show this user", "Arată acest utilizator"
-
1
l.store "Spam Protection", "Protecție anti-spam"
-
1
l.store "Spam protection", "Protecție anti-spam"
-
1
l.store "String", "Șir de caractere"
-
1
l.store "Subtitle", "Subtitlu"
-
1
l.store "Summary", "Rezumat"
-
1
l.store "Text Filter Details", "Detaliile filtrului de text"
-
1
l.store "Text Filters", "Filtre de text"
-
1
l.store "Textfilter", "Filtru de text"
-
1
l.store "The below settings act as defaults when you choose to publish an enclosure with iTunes metadata", "Setările de mai jos vor reprezenta valorile implicite atunci cînd vei publica un enclosure cu metainformații pentru iTunes"
-
1
l.store "Things you can do", "Acțiuni"
-
1
l.store "This option let you choose between the simple admin interface or the complete one, displaying much more options and therefore more complicated to use. For advanced users only!","This option let you choose between the simple admin interface or the complete one, displaying much more options and therefore more complicated to use. For advanced users only!" #Need translate
-
1
l.store "Type", "Tip"
-
1
l.store "Typo admin", "Administrare Typo"
-
1
l.store "Upload a new File", "Încarcă un fișier nou"
-
1
l.store "Upload a new Resource", "Încarcă o nouă resursă"
-
1
l.store "Uploaded", "Încărcat la"
-
1
l.store "User's articles", "Articole publicate de acest utilizator"
-
1
l.store "View article on your blog", "Arată acest articol in blog"
-
1
l.store "View comment on your blog", "Arată acest comentariu în blog"
-
1
l.store "View page on your blog", "Arată această pagină în blog"
-
1
l.store "Which settings group would you like to edit", "Ce grup de setări dorești să modifici"
-
1
l.store "Write a Page", "Compune o pagină"
-
1
l.store "Write an Article", "Scrie un articol"
-
1
l.store "You are now logged out of the system", "Ați ieșit din aplicație"
-
1
l.store "You can add it to the following categories", "Îl puteți adăuga următoarelor categorii"
-
1
l.store "You can enable site wide feedback moderation. If you do so, no comment or trackback will appear on your blog unless you validate it", ""
-
1
l.store "You can optionally disable non-Ajax comments. Typo will always use Ajax for comment submission if Javascript is enabled, so non-Ajax comments are either from spammers or users without Javascript.", "Opțional, puteți dezactiva comentariile non-AJAX. Typo va folosi întotdeauna AJAX pentru trimiterea comentariilor dacă funcționează Javascript la utilizator, astfel că orice comentariu care nu vine prin AJAX trebuie să vină fie de la spammeri, fie de la vizitatori fără Javascript."
-
1
l.store "by", "de"
-
1
l.store "on", "la"
-
1
l.store "seperate with spaces", "separate de spațiu"
-
1
l.store "via email", "prin email"
-
1
l.store "with %s Famfamfam iconset %s", "cu %s pictograme Famfamfam %s"
-
1
l.store "your blog", "blog-ul tău"
-
end
-
# coding: utf-8
-
1
Localization.define("zh_TW") do |l|
-
-
# app/controllers/accounts_controller.rb
-
1
l.store "Login successful", ""
-
1
l.store "Login unsuccessful", ""
-
1
l.store "An email has been successfully sent to your address with your new password", ""
-
1
l.store "Oops, something wrong just happened", ""
-
1
l.store "Successfully logged out", ""
-
1
l.store "login", ""
-
1
l.store "signup", ""
-
1
l.store "Recover your password", ""
-
-
# app/controllers/admin/categories_controller.rb
-
1
l.store "Category was successfully saved.", ""
-
1
l.store "Category could not be saved.", ""
-
-
# app/controllers/admin/content_controller.rb
-
1
l.store "Error, you are not allowed to perform this action", ""
-
1
l.store "Preview", ""
-
1
l.store "Article was successfully created", ""
-
1
l.store "Article was successfully updated.", ""
-
-
# app/controllers/admin/feedback_controller.rb
-
1
l.store "Deleted", ""
-
1
l.store "Not found", ""
-
1
l.store "Deleted %d item(s)", ""
-
1
l.store "Marked %d item(s) as Ham", ""
-
1
l.store "Marked %d item(s) as Spam", ""
-
1
l.store "Confirmed classification of %s item(s)", ""
-
1
l.store "Not implemented", ""
-
1
l.store "All spam have been deleted", ""
-
1
l.store "Comment was successfully created.", ""
-
1
l.store "Comment was successfully updated.", ""
-
-
# app/controllers/admin/pages_controller.rb
-
1
l.store "Page was successfully created.", ""
-
1
l.store "Page was successfully updated.", ""
-
-
# app/controllers/admin/profiles_controller.rb
-
1
l.store "User was successfully updated.", ""
-
-
# app/controllers/admin/resources_controller.rb
-
1
l.store "Error occurred while updating Content Type.", "當更新內容類型時發生錯誤"
-
1
l.store "complete", "完成"
-
1
l.store "File uploaded: ", "檔案上傳: "
-
1
l.store "Unable to upload", "不能被上傳"
-
1
l.store "Metadata was successfully updated.", "Metadata已成功更新"
-
1
l.store "Not all metadata was defined correctly.", "並非所有Metadata已被正確定義"
-
1
l.store "Content Type was successfully updated.", "內容類型已被成功更新"
-
-
# app/controllers/admin/settings_controller.rb
-
1
l.store "Please review and save the settings before continuing", ""
-
1
l.store "config updated.", "更新設定"
-
-
# app/controllers/admin/sidebar_controller.rb
-
1
l.store "It seems something went wrong. Maybe some of your sidebars are actually missing and you should either reinstall them or remove them manually", ""
-
-
# app/controllers/admin/tags_controller.rb
-
1
l.store "Tag was successfully updated.", ""
-
-
# app/controllers/admin/themes_controller.rb
-
1
l.store "Theme changed successfully", ""
-
1
l.store "You are not authorized to open this file", ""
-
1
l.store "File saved successfully", ""
-
1
l.store "Unable to write file", ""
-
-
# app/controllers/admin/users_controller.rb
-
1
l.store "User was successfully created.", ""
-
-
# app/controllers/application_controller.rb
-
1
l.store "Localization.rtl", ""
-
-
# app/controllers/articles_controller.rb
-
1
l.store "No posts found...", ""
-
1
l.store "Archives for", ""
-
1
l.store "Archives for ", ""
-
1
l.store ", Articles for ", ""
-
-
# app/controllers/grouping_controller.rb
-
1
l.store "page", ""
-
1
l.store "everything about", ""
-
-
# app/helpers/admin/base_helper.rb
-
1
l.store "Cancel", "取消"
-
1
l.store "Store", ""
-
1
l.store "Delete", "刪除"
-
1
l.store "delete", ""
-
1
l.store "Delete content", ""
-
1
l.store "Are you sure?", ""
-
1
l.store "Please select", ""
-
1
l.store "There are no %s yet. Why don't you start and create one?", ""
-
1
l.store "or", "或"
-
1
l.store "Save", "存檔"
-
1
l.store "Edit", "修改"
-
1
l.store "Show", ""
-
1
l.store "Published", "已公開的"
-
1
l.store "Unpublished", ""
-
1
l.store "Show help on Typo macros", ""
-
1
l.store "Back to overview", "回到概覽"
-
1
l.store "Name", "名字"
-
1
l.store "Description", "説明"
-
1
l.store "Tag", ""
-
-
# app/helpers/admin/categories_helper.rb
-
1
l.store "no articles", ""
-
1
l.store "1 article", ""
-
1
l.store "%d articles", ""
-
-
# app/helpers/admin/content_helper.rb
-
1
l.store "Destroy this draft", ""
-
-
# app/helpers/admin/feedback_helper.rb
-
1
l.store "Show conversation", ""
-
1
l.store "Flag as %s", ""
-
-
# app/helpers/application_helper.rb
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M:%%S GMT", ""
-
1
l.store "%%d. %%b", ""
-
1
l.store "%d comments", ""
-
1
l.store "no comments", "沒有評論"
-
1
l.store "1 comment", ""
-
1
l.store "no trackbacks", "沒有引用"
-
1
l.store "1 trackback", ""
-
1
l.store "%d trackbacks", ""
-
-
# app/helpers/content_helper.rb
-
1
l.store "Posted in", ""
-
1
l.store "Tags", "標示標籤"
-
1
l.store "no posts", ""
-
1
l.store "1 post", ""
-
1
l.store "%d posts", ""
-
-
# app/models/article.rb
-
1
l.store "Original article writen by", ""
-
1
l.store "and published on", ""
-
1
l.store "direct link to this article", ""
-
1
l.store "If you are reading this article elsewhere than", ""
-
1
l.store "it has been illegally reproduced and without proper authorization", ""
-
-
# app/models/blog.rb
-
1
l.store "You need a permalink format with an identifier : %%month%%, %%year%%, %%day%%, %%title%%", ""
-
1
l.store "Can't end in .rss or .atom. These are reserved to be used for feed URLs", ""
-
-
# app/models/feedback/states.rb
-
1
l.store "Unclassified", ""
-
1
l.store "Just Presumed Ham", ""
-
1
l.store "Ham?", ""
-
1
l.store "Just Marked As Ham", ""
-
1
l.store "Ham", ""
-
1
l.store "Spam?", ""
-
1
l.store "Just Marked As Spam", ""
-
1
l.store "Spam", ""
-
-
# app/views/accounts/login.html.erb
-
1
l.store "I've lost my password", ""
-
1
l.store "Login", "登入"
-
1
l.store "Password", "密碼"
-
1
l.store "Remember me", ""
-
1
l.store "Submit", ""
-
1
l.store "Back to ", ""
-
-
# app/views/accounts/recover_password.html.erb
-
1
l.store "Username or email", ""
-
-
# app/views/accounts/signup.html.erb
-
1
l.store "Create an account", ""
-
1
l.store "Username", "名稱"
-
1
l.store "Email", "Email"
-
1
l.store "Signup", "註冊"
-
-
# app/views/admin/categories/_categories.html.erb
-
1
l.store "Title", "標題"
-
1
l.store "Reorder", "重新排序"
-
1
l.store "Sort alphabetically", "依字母順序排序"
-
-
# app/views/admin/categories/_form.html.erb
-
1
l.store "Keywords", ""
-
-
# app/views/admin/categories/destroy.html.erb
-
1
l.store "Are you sure you want to delete the category ", "確認刪除此分類? "
-
1
l.store "Delete this category", "刪除分類"
-
1
l.store "Categories", "分類"
-
-
# app/views/admin/categories/index.html.erb
-
1
l.store "New Category", ""
-
-
# app/views/admin/categories/new.html.erb
-
1
l.store "%s Category", ""
-
-
# app/views/admin/categories/reorder.html.erb
-
1
l.store "(Done)", "(完成)"
-
-
# app/views/admin/content/_attachment.html.erb
-
1
l.store "Remove", "移除"
-
1
l.store "Currently this article has the following resources", ""
-
1
l.store "You can associate the following resources", "你可以連結下列資源"
-
1
l.store "Really delete attachment", "確定刪除附件?"
-
1
l.store "Add Another Attachment", "新增其他附件"
-
-
# app/views/admin/content/_drafts.html.erb
-
1
l.store "Drafts", ""
-
-
# app/views/admin/content/_form.html.erb
-
1
l.store "Publish settings", ""
-
1
l.store "Allow comments", "允許評論"
-
1
l.store "Allow trackbacks", "允許引用"
-
1
l.store "Password:", ""
-
1
l.store "Publish", "公開"
-
1
l.store "Excerpt", ""
-
1
l.store "Excerpts are posts summaries that are shown on your blog homepage only but won’t appear on the post itself", ""
-
1
l.store "Uploads", "上載"
-
1
l.store "Post settings", ""
-
1
l.store "Publish at", "公開"
-
1
l.store "Permalink", "固定連接"
-
1
l.store "Article filter", "篩選文章"
-
1
l.store "Save as draft", ""
-
-
# app/views/admin/content/destroy.html.erb
-
1
l.store "Are you sure you want to delete this article", "確定刪除本篇文章?"
-
1
l.store "Delete this article", "刪除本篇文章"
-
1
l.store "Articles", "文章"
-
-
# app/views/admin/content/index.html.erb
-
1
l.store "New Article", ""
-
1
l.store "Search articles that contain ...", ""
-
1
l.store "Search", ""
-
1
l.store "Author", "作者"
-
1
l.store "Date", ""
-
1
l.store "Feedback", "回應"
-
1
l.store "Filter", ""
-
1
l.store "Manage articles", ""
-
-
# app/views/admin/dashboard/_comments.html.erb
-
1
l.store "Latest Comments", "最近評論"
-
1
l.store "No comments yet", "沒有任何評論"
-
1
l.store "By %s on %s", ""
-
-
# app/views/admin/dashboard/_inbound.html.erb
-
1
l.store "Inbound links", "導入連結"
-
1
l.store "No one made a link to you yet", "目前沒有人連結到你"
-
1
l.store " made a link to you saying ", "連結到你,並且說"
-
1
l.store "You have no internet connection", "你沒有連結到網路"
-
-
# app/views/admin/dashboard/_overview.html.erb
-
1
l.store "This place gives you a quick overview of what happens on your Typo blog and what you can do. Maybe will you want to %s, %s or %s.", "這個地方給你一個快速的綜覽,讓你知道你的部落格發生甚麼事情了。也許你想要%s, %s或%s"
-
1
l.store "update your profile or change your password", "更新資料或者修改密碼"
-
1
l.store "You can also do a bit of design, %s or %s.", "你也可以作一些設計, %s或%s."
-
1
l.store "change your blog presentation", "修改你的部落格外觀"
-
1
l.store "enable plugins", "啟動plugins"
-
1
l.store "write a post", "寫一篇文章"
-
1
l.store "write a page", "寫一個頁面"
-
-
# app/views/admin/dashboard/_popular.html.erb
-
1
l.store "Most popular", "最受歡迎"
-
1
l.store "Nothing to show yet", "還沒有東西"
-
-
# app/views/admin/dashboard/_posts.html.erb
-
1
l.store "Latest Posts", ""
-
1
l.store "No posts yet, why don't you start and write one", "你還沒有發文"
-
-
# app/views/admin/dashboard/_typo_dev.html.erb
-
1
l.store "Latest news from the Typo development blog", "Typo開發部落格的最新消息"
-
1
l.store "Oh no, nothing new", "沒有新訊息"
-
-
# app/views/admin/dashboard/_welcome.html.erb
-
1
l.store "Welcome back, %s!", "歡迎回來, %s!"
-
1
l.store "%d articles and %d comments were posted since your last connexion", ""
-
1
l.store "You're running Typo %s", "你現在是使用Typo %s"
-
1
l.store "Total posts : %d", "發文總計:%d"
-
1
l.store "Your posts : %d", "你的發文:%d"
-
1
l.store "Total comments : %d", "評論總計:%d"
-
1
l.store "Spam comments : %d", "垃圾評論:%d"
-
-
# app/views/admin/feedback/_button.html.erb
-
1
l.store "Select action", ""
-
1
l.store "Delete Checked Items", ""
-
1
l.store "Delete all spam", ""
-
1
l.store "Mark Checked Items as Spam", ""
-
1
l.store "Mark Checked Items as Ham", ""
-
1
l.store "All comments", ""
-
1
l.store "Limit to ham", ""
-
1
l.store "Unapproved comments", ""
-
1
l.store "Limit to spam", "限制垃圾郵件"
-
-
# app/views/admin/feedback/_form.html.erb
-
1
l.store "Add a comment", ""
-
1
l.store "Url", "Url"
-
-
# app/views/admin/feedback/_spam.html.erb
-
1
l.store "This comment by <strong>%s</strong> was flagged as spam, %s?", ""
-
-
# app/views/admin/feedback/article.html.erb
-
1
l.store "Comments for %s", ""
-
1
l.store "Status", "身分"
-
1
l.store "Comment Author", ""
-
1
l.store "Comment", ""
-
-
# app/views/admin/feedback/edit.html.erb
-
1
l.store "Comments for", "做出評論"
-
-
# app/views/admin/feedback/index.html.erb
-
1
l.store "Search Comments and Trackbacks that contain", ""
-
1
l.store "Article", ""
-
-
# app/views/admin/pages/_form.html.erb
-
1
l.store "Online", "上線"
-
1
l.store "Page settings", ""
-
1
l.store "Permanent link", ""
-
-
# app/views/admin/pages/destroy.html.erb
-
1
l.store "Pages","頁數"
-
1
l.store "Are you sure you want to delete the page", "你確定要刪除此頁?"
-
1
l.store "Delete this page", "刪除此頁"
-
-
# app/views/admin/pages/index.html.erb
-
1
l.store "New Page", ""
-
1
l.store "Manage pages", ""
-
-
# app/views/admin/profiles/index.html.erb
-
1
l.store "Your profile", ""
-
-
# app/views/admin/resources/_mime_edit.html.erb
-
1
l.store "Content Type", "內容類型"
-
-
# app/views/admin/resources/_pages.html.erb
-
1
l.store "Previous page", "前一頁"
-
1
l.store "Next page", "下一頁"
-
-
# app/views/admin/resources/_upload.html.erb
-
1
l.store "Upload a File to your Site", "上傳一個檔案到你的網點"
-
1
l.store "File", "檔案"
-
1
l.store "Upload", "上傳"
-
-
# app/views/admin/resources/destroy.html.erb
-
1
l.store "Are you sure you want to delete this file", "你確定要刪除此檔案?"
-
1
l.store "Delete this file from the webserver?", "從網路伺服器刪除此檔案?"
-
1
l.store "File Uploads", "檔案上載"
-
-
# app/views/admin/resources/images.html.erb
-
1
l.store "Thumbnail", ""
-
1
l.store "File Size", "檔案大小"
-
1
l.store "Images", ""
-
1
l.store "right-click for link", "右鍵連結"
-
-
# app/views/admin/resources/index.html.erb
-
1
l.store "Filename", "檔案名稱"
-
-
# app/views/admin/settings/_submit.html.erb
-
1
l.store "Update settings", ""
-
-
# app/views/admin/settings/feedback.html.erb
-
1
l.store "Enable comments by default", "預設為可以回應"
-
1
l.store "Enable Trackbacks by default", "預設為可以引用"
-
1
l.store "Enable feedback moderation", "適度可以反饋"
-
1
l.store "You can enable site wide feeback moderation. If you do so, no comment or trackback will appear on your blog unless you validate it", "你可以設定網點範圍有限度的反饋。這麼做將不會有任何評論引用出現在你的部落格,除非你使之生效"
-
1
l.store "Comments filter", "篩選評論"
-
1
l.store "Enable gravatars", "可以顯示留言大頭貼"
-
1
l.store "Show your email address", "秀出你的email位址"
-
1
l.store "Notifications", ""
-
1
l.store "Typo can notify you when new articles or comments are posted", "當新的文章或評論被貼上時typo會通知你"
-
1
l.store "Source Email", "原始email"
-
1
l.store "Email address used by Typo to send notifications", "email位址使用typo發出通知"
-
1
l.store "Enabling spam protection will make typo compare the IP address of posters as well as the contents of their posts against local and remote blacklists. Good defense against spam bots", "typo會根據張貼者IP的位址內容還有黑名單來有效防止垃圾郵件。好的防禦可以抑制垃圾郵寄"
-
1
l.store "Enable spam protection", "有效防止垃圾郵件"
-
1
l.store "Akismet Key", "Akismet鍵"
-
1
l.store "Typo can (optionally) use the %s spam-filtering service. You need to register with Akismet and receive an API key before you can use their service. If you have an Akismet key, enter it here", "Typo隨意的使用 %s 篩選垃圾郵件服務。"
-
1
l.store "Disable trackbacks site-wide", ""
-
1
l.store "This setting allows you to disable trackbacks for every article in your blog. It won't remove existing trackbacks, but it will prevent any further attempt to add a trackback anywhere on your blog.", "此設定可以讓你部落格裡的文章停止引用,這個舉動並不會刪除存在的引用,但是會阻止將來你要試圖增加的引用"
-
1
l.store "Disable comments after", "在失效的評論之後"
-
1
l.store "days", "日期"
-
1
l.store "Set to 0 to never disable comments", "設定0為絕不失效的評論"
-
1
l.store "Max Links", "最大的連結值"
-
1
l.store "Typo will automatically reject comments and trackbacks which contain over a certain amount of links in them", "Typo會自動回絕評論和引用,包含某些可靠的連結總數"
-
1
l.store "Set to 0 to never reject comments", "設定0回絕不回絕的評論"
-
1
l.store "Feedback settings", ""
-
-
# app/views/admin/settings/index.html.erb
-
1
l.store "Your blog", "你的部落格"
-
1
l.store "Blog name", "部落格名稱"
-
1
l.store "Blog subtitle", "副標題"
-
1
l.store "Blog URL", "部落格URL"
-
1
l.store "Language", "言語"
-
1
l.store "Allow users to register", ""
-
1
l.store "You can allow users to register to your blog. By default, they will register as contributors, an unpriviledged account level which grant them no rights but own a profile on the site. If you don't want users to register, you can thus add them by yourself in the users part of this admin.", ""
-
1
l.store "Items to display in admin lists", ""
-
1
l.store "Publishing options", ""
-
1
l.store "Display", "顯示"
-
1
l.store "articles on my homepage by default", "預設的首頁文章"
-
1
l.store "articles in my news feed by default", "預設的feed文章"
-
1
l.store "Show full article on feed", "顯示全部feed文章"
-
1
l.store "Feedburner ID", ""
-
1
l.store "General settings", "一般設定"
-
1
l.store "You can use your Google Feedburner account instead of Typo feed URL. To enable this, fill this form with your Feedburner ID.", ""
-
-
# app/views/admin/settings/seo.html.erb
-
1
l.store "Search Engine Optimisation", "SEO"
-
1
l.store "Format of permalink", ""
-
1
l.store "Google Analytics", ""
-
1
l.store "Google verification link", ""
-
1
l.store "Meta description", ""
-
1
l.store "Meta keywords", ""
-
1
l.store "Use RSS description", ""
-
1
l.store "Index categories", ""
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every category page, removing them from search engines and preventing duplicate content issues", ""
-
1
l.store "Index tags", ""
-
1
l.store "Unchecking this box will add <code>noindex, follow</code> meta tags in every tags page, removing them from search engines and preventing duplicate content issues", ""
-
1
l.store "Robots.txt", ""
-
1
l.store "You robots.txt file is not writeable. Typo won't be able to write it", ""
-
1
l.store "Search Engine Optimization", ""
-
1
l.store "This will display", ""
-
1
l.store "at the bottom of each of your post in the RSS feed", ""
-
-
# app/views/admin/settings/update_database.html.erb
-
1
l.store "Information", "資訊"
-
1
l.store "Current database version", "當前的資料庫版本"
-
1
l.store "New database version", "新資料庫版本"
-
1
l.store "Your database supports migrations", "你的資料庫支援移動"
-
1
l.store "Needed migrations", "必要的移動"
-
1
l.store "You are up to date!", "你現在是最新的狀態"
-
1
l.store "Update database now", "現在更新資料庫"
-
1
l.store "may take a moment", "需要稍等一下"
-
1
l.store "Database migration", "資料庫移動"
-
1
l.store "yes", "確認"
-
1
l.store "no", "取消"
-
-
# app/views/admin/settings/write.html.erb
-
1
l.store "Send trackbacks", "引用發送"
-
1
l.store "When publishing articles, Typo can send trackbacks to websites that you link to. This should be disabled for private blogs as it will leak non-public information to sites that you're discussing. For public blogs, there's no real point in disabling this.", "當公開的文章或引用會洩漏你私人的資訊時,對於不公開的部落格typo會終止連結。在公開的部落格並無此選項"
-
1
l.store "URLs to ping automatically", "URL自動地Ping"
-
1
l.store "Latitude, Longitude", "緯度,經度"
-
1
l.store "your lattitude and longitude", "你的緯度、經度"
-
1
l.store "exemple", "舉例"
-
1
l.store "Write", "寫入"
-
-
# app/views/admin/sidebar/_availables.html.erb
-
1
l.store "You have no plugins installed", "你沒有plugins可以安置"
-
-
# app/views/admin/sidebar/_publish.html.erb
-
1
l.store "Changes published", "公開變更"
-
-
# app/views/admin/sidebar/_target.html.erb
-
1
l.store "Drag some plugins here to fill your sidebar", "拖曳一些plugins填滿你的sidebar"
-
-
# app/views/admin/sidebar/index.html.erb
-
1
l.store "Drag and drop to change the sidebar items displayed on this blog. To remove items from the sidebar just click remove Changes are saved immediately, but not activated until you click the 'Publish' button", "在這個部落格顯示拖曳改變的sidebar選項。從sidebar選項移除會立即存檔,但是不會執行直到你輸入<公開>鍵"
-
1
l.store "Available Items", "可用的項目"
-
1
l.store "Active Sidebar items", "有效的側邊欄項目"
-
1
l.store "Get more plugins", ""
-
1
l.store "Sidebar", ""
-
1
l.store "Publish changes", "公開變更"
-
-
# app/views/admin/tags/_form.html.erb
-
1
l.store "Display name", "暱稱"
-
-
# app/views/admin/tags/destroy.html.erb
-
1
l.store "Are you sure you want to delete the tag", ""
-
1
l.store "Delete this tag", ""
-
-
# app/views/admin/tags/edit.html.erb
-
1
l.store "Editing ", ""
-
1
l.store "Back to tags list", ""
-
-
# app/views/admin/tags/index.html.erb
-
1
l.store "Display Name", ""
-
1
l.store "Manage tags", ""
-
-
# app/views/admin/themes/catalogue.html.erb
-
1
l.store "Sorry the theme catalogue is not available", ""
-
1
l.store "Theme catalogue", ""
-
-
# app/views/admin/themes/editor.html.erb
-
1
l.store "Theme editor", ""
-
-
# app/views/admin/themes/index.html.erb
-
1
l.store "Active theme", "執行中主題"
-
1
l.store "Get more themes", ""
-
1
l.store "You can download third party themes from officially supported %s ", ""
-
1
l.store "Typogarden", ""
-
1
l.store "To install a theme you just need to upload the theme folder into your themes directory. Once a theme is uploaded, you should see it on this page.", ""
-
1
l.store "Choose a theme", "選擇主題"
-
-
# app/views/admin/users/_form.html.erb
-
1
l.store "Account settings", ""
-
1
l.store "Password confirmation", ""
-
1
l.store "Profile", ""
-
1
l.store "User's status", ""
-
1
l.store "Active", ""
-
1
l.store "Inactive", ""
-
1
l.store "Profile Settings", ""
-
1
l.store "Firstname", ""
-
1
l.store "Lastname", ""
-
1
l.store "Nickname", ""
-
1
l.store "Editor", ""
-
1
l.store "Use simple editor", ""
-
1
l.store "Use visual rich editor", ""
-
1
l.store "Send notification messages via email", "經由email發出通知訊息"
-
1
l.store "Send notification messages when new articles are posted", "新的文章貼上時發出通知訊息"
-
1
l.store "Send notification messages when comments are posted", "新的評錀貼上時發出通知訊息"
-
1
l.store "Contact Options", ""
-
1
l.store "Your site", ""
-
1
l.store "display url on public profile", ""
-
1
l.store "Your MSN", ""
-
1
l.store "display MSN ID on public profile", ""
-
1
l.store "Your Yahoo ID", ""
-
1
l.store "display Yahoo! ID on public profile", ""
-
1
l.store "Your Jabber ID", ""
-
1
l.store "display Jabber ID on public profile", ""
-
1
l.store "Your AIM id", ""
-
1
l.store "display AIM ID on public profile", ""
-
1
l.store "Your Twitter username", ""
-
1
l.store "display twitter on public profile", ""
-
1
l.store "Tell us more about you", ""
-
-
# app/views/admin/users/destroy.html.erb
-
1
l.store "Really delete user", "確定刪除使用者"
-
1
l.store "Yes", ""
-
1
l.store "Users", "使用者"
-
-
# app/views/admin/users/edit.html.erb
-
1
l.store "Edit User", "修改使用者"
-
-
# app/views/admin/users/index.html.erb
-
1
l.store "New User", "新的使用者"
-
1
l.store "Comments", "評論"
-
1
l.store "State", ""
-
1
l.store "%s user", ""
-
-
# app/views/admin/users/new.html.erb
-
1
l.store "Add User", ""
-
-
# app/views/articles/_article.html.erb
-
1
l.store "Posted by", "貼上"
-
1
l.store "Continue reading", ""
-
-
# app/views/articles/_comment.html.erb
-
1
l.store "said", "發言"
-
1
l.store "This comment has been flagged for moderator approval. It won't appear on this blog until the author approves it", "這篇評論被標示為版主所允許的。他不會在部落格顯示直到版主承認他。"
-
-
# app/views/articles/_comment_box.html.erb
-
1
l.store "Your name", "你的名稱"
-
1
l.store "Your email", "你的email"
-
1
l.store "Your message", "你的訊息"
-
1
l.store "Comment Markup Help", "評論顯示協助"
-
1
l.store "Preview comment", "預覽評論"
-
1
l.store "leave url/email", ""
-
-
# app/views/articles/_comment_failed.html.erb
-
1
l.store "Oops, something wrong happened, the comment could not be saved", ""
-
-
# app/views/articles/_trackback.html.erb
-
1
l.store "From", "From"
-
-
# app/views/articles/archives.html.erb
-
1
l.store "No articles found", "沒有找到任何文章"
-
1
l.store "posted in", ""
-
-
# app/views/articles/comment_preview.html.erb
-
1
l.store "is about to say", "這是關於~~"
-
-
# app/views/articles/groupings.html.erb
-
1
l.store "There are", "有"
-
-
# app/views/articles/read.html.erb
-
1
l.store "Leave a response", "離開一個回應"
-
1
l.store "Trackbacks", "引用"
-
1
l.store "Use the following link to trackback from your own site", "從你所屬的網點用隨後的連結去引用"
-
1
l.store "RSS feed for this post", "為本篇提供RSS"
-
1
l.store "trackback uri", "引用URL"
-
1
l.store "Comments are disabled", "評論停用"
-
-
# app/views/authors/show.html.erb
-
1
l.store "Web site:", ""
-
1
l.store "MSN:", ""
-
1
l.store "Yahoo:", ""
-
1
l.store "Jabber:", ""
-
1
l.store "AIM:", ""
-
1
l.store "Twitter:", ""
-
1
l.store "About %s", ""
-
1
l.store "This author has not published any article yet", ""
-
-
# app/views/comments/show.html.erb
-
1
l.store "This comment has been flagged for moderator approval.", ""
-
-
# app/views/layouts/administration.html.erb
-
1
l.store "%s »", ""
-
1
l.store "is proudly powered by", ""
-
1
l.store "Dashboard", ""
-
-
# app/views/setup/index.html.erb
-
1
l.store "Welcome", ""
-
1
l.store "Welcome to your %s blog setup. Just fill in your blog title and your email, and Typo will take care of everything else", ""
-
-
# app/views/shared/_confirm.html.erb
-
1
l.store "Congratulation!", ""
-
1
l.store "You have successfully signed up", ""
-
1
l.store "<strong>Login:</strong> %s", ""
-
1
l.store "<strong>Password:</strong> %s", ""
-
1
l.store "Don't lose the mail sent at %s or you won't be able to login anymore", ""
-
1
l.store "Proceed to %s", ""
-
1
l.store "admin", ""
-
-
# app/views/shared/_search.html.erb
-
1
l.store "Live Search", ""
-
-
# test/mocks/themes/typographic/layouts/default.html.erb
-
1
l.store "Powered by %s", ""
-
1
l.store "Designed by %s ", ""
-
-
# test/mocks/themes/typographic/views/articles/_article.html.erb
-
1
l.store "Continue reading...", ""
-
1
l.store "This entry was posted on %s", ""
-
1
l.store "and %s", ""
-
1
l.store "You can follow any response to this entry through the %s", ""
-
1
l.store "Atom feed", ""
-
1
l.store "You can leave a %s", ""
-
1
l.store "or a %s from your own site", ""
-
1
l.store "Read full article", ""
-
1
l.store "comment", ""
-
1
l.store "trackback", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment.html.erb
-
1
l.store "later", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment_form.html.erb
-
1
l.store "Leave a comment", ""
-
1
l.store "Name %s", ""
-
1
l.store "enabled", ""
-
1
l.store "never displayed", ""
-
1
l.store "Website", ""
-
1
l.store "Textile enabled", ""
-
1
l.store "Markdown enabled", ""
-
1
l.store "required", ""
-
-
# test/mocks/themes/typographic/views/articles/_comment_list.html.erb
-
1
l.store "No comments", ""
-
-
# test/mocks/themes/typographic/views/shared/_search.html.erb
-
1
l.store "Searching", ""
-
-
# themes/dirtylicious/layouts/default.html.erb
-
1
l.store "Home", ""
-
1
l.store "About", ""
-
1
l.store "Designed by %s ported to typo by %s ", ""
-
-
# themes/scribbish/layouts/default.html.erb
-
1
l.store "styled with %s", ""
-
-
# themes/scribbish/views/articles/_article.html.erb
-
1
l.store "Meta", ""
-
1
l.store "permalink", ""
-
-
# themes/true-blue-3/helpers/theme_helper.rb
-
1
l.store "You are here: ", ""
-
1
l.store "%d comment", ""
-
-
# themes/true-blue-3/views/articles/_article.html.erb
-
1
l.store "%%a, %%d %%b %%Y %%H:%%M", ""
-
-
# themes/true-blue-3/views/articles/_comment.html.erb
-
1
l.store "By", ""
-
1
l.store "later:", ""
-
-
# themes/true-blue-3/views/articles/_comment_form.html.erb
-
1
l.store "Email address", ""
-
1
l.store "Your website", ""
-
-
# themes/true-blue-3/views/articles/read.html.erb
-
1
l.store "If you liked this article you can %s", ""
-
1
l.store "add me to Twitter", ""
-
1
l.store "Trackbacks for", "作為引用"
-
-
# themes/true-blue-3/views/articles/search.html.erb
-
1
l.store "Search results for:", ""
-
-
# themes/true-blue-3/views/categories/index.html.erb
-
1
l.store "Read all articles in %s", ""
-
-
# themes/true-blue-3/views/categories/show.html.erb
-
1
l.store "Previous", ""
-
1
l.store "Next", ""
-
-
# vendor/plugins/archives_sidebar/views/content.rhtml
-
1
l.store "Archives", "歸檔"
-
-
# vendor/plugins/authors_sidebar/views/content.rhtml
-
1
l.store "Authors", ""
-
-
# vendor/plugins/xml_sidebar/views/content.rhtml
-
1
l.store "Syndicate", "整合發表"
-
1
l.store "Category %s", ""
-
1
l.store "Tag %s", ""
-
-
# Obsolete translations
-
1
l.store "A new message was posted to ", "一個新的訊息已被貼上"
-
1
l.store "AIM Presence", "AIM存在"
-
1
l.store "AIM Status", "AIM身分"
-
1
l.store "Action", "開始行動"
-
1
l.store "Activate", "執行中"
-
1
l.store "Add MetaData", "新增MetaData"
-
1
l.store "Add category", "新增分類"
-
1
l.store "Add new user", "新增使用者"
-
1
l.store "Add pattern", "新增樣式"
-
1
l.store "Advanced settings", "進階設定"
-
1
l.store "Allow non-ajax comments", "允許non-ajax評論"
-
1
l.store "Are you sure you want to delete this filter", "你確定要刪除此篩選器?"
-
1
l.store "Are you sure you want to delete this item?", "確認刪除?"
-
1
l.store "Article Attachments", "文章附件"
-
1
l.store "Article Body", "文章主體"
-
1
l.store "Article Content", " 文章內容"
-
1
l.store "Article Options","文章選項"
-
1
l.store "Articles in", "記事"
-
1
l.store "Attachments", "附件"
-
1
l.store "Back to the blog", "回到部落格"
-
1
l.store "Basic settings", "基本設定"
-
1
l.store "Blacklist", "列入黑名單"
-
1
l.store "Blacklist Patterns", "黑名單樣式"
-
1
l.store "Blog advanced settings", "部落格進階設定"
-
1
l.store "Blog settings", "部落格設定"
-
1
l.store "Body", "本文主體"
-
1
l.store "Cache", "儲存"
-
1
l.store "Cache was cleared", "cache已清除"
-
1
l.store "Category", "分類"
-
1
l.store "Category could not be created.", "分類不能被設定"
-
1
l.store "Category title", "分類標題"
-
1
l.store "Category was successfully created.", "分類已成功設定"
-
1
l.store "Category was successfully updated.", "分類已成功更新"
-
1
l.store "Change you blog presentation", "修改外觀"
-
1
l.store "Choose password", "密碼"
-
1
l.store "Comments and Trackbacks for", "作為評論和引用"
-
1
l.store "Confirm password", "密碼確認"
-
1
l.store "Copyright Information", "著作權資訊"
-
1
l.store "Create new Blacklist", "建立黑名單"
-
1
l.store "Create new category", "增加新的分類"
-
1
l.store "Create new page", "設計新的一頁"
-
1
l.store "Create new text filter", "設計新的本文篩選器"
-
1
l.store "Creating comment", "設計評論"
-
1
l.store "Creating text filter", "建立本文篩選器"
-
1
l.store "Creating trackback", "設計引用中"
-
1
l.store "Creating user", "設定使用者"
-
1
l.store "Currently this article has the following ", "將本篇文章接在下列"
-
1
l.store "Currently this article is listed in following categories", "將本篇文章列在以下分類中"
-
1
l.store "Customize Sidebar", "定製側邊欄"
-
1
l.store "Delete this filter", "刪除此篩選器"
-
1
l.store "Design", "設計"
-
1
l.store "Desired login", "登入名稱"
-
1
l.store "Discuss", "詳述"
-
1
l.store "Do you want to go to your blog?", "進入您的部落格?"
-
1
l.store "Duration", "持續時間"
-
1
l.store "Edit Article", "修改文章"
-
1
l.store "Edit MetaData", "修改MetaData"
-
1
l.store "Edit this article", "修改本篇文章"
-
1
l.store "Edit this category", "類目編輯"
-
1
l.store "Edit this filter", "修改此篩選器"
-
1
l.store "Edit this page", "修改此頁"
-
1
l.store "Edit this trackback", "修改此引用"
-
1
l.store "Editing User", "修改使用者中中"
-
1
l.store "Editing category", "修改分類"
-
1
l.store "Editing comment", "修改評論"
-
1
l.store "Editing page", "修改頁面中"
-
1
l.store "Editing pattern", "修改樣式"
-
1
l.store "Editing textfilter", "修改本文篩選器"
-
1
l.store "Editing trackback", "修改引用"
-
1
l.store "Empty Fragment Cache", "清空零碎儲存體"
-
1
l.store "Enable plugins", "Enable plugins"
-
1
l.store "Explicit", "Explicit"
-
1
l.store "Extended Content", "擴增內容"
-
1
l.store "Feedback Search", "信息反饋搜尋"
-
1
l.store "Filters", "篩選器"
-
1
l.store "General Settings", "一般設定"
-
1
l.store "HTML was cleared", "HTML已清除"
-
1
l.store "IP", "IP"
-
1
l.store "Jabber", "Jabber"
-
1
l.store "Jabber account", "Jabber帳目"
-
1
l.store "Jabber account to use when sending Jabber notifications", "當發出jabber通知時使用jabber帳目"
-
1
l.store "Jabber password", "Jabber密碼"
-
1
l.store "Key Words", "輸入"
-
1
l.store "Last Comments", "最新評論"
-
1
l.store "Last posts", "最新文章"
-
1
l.store "Last updated", "上一次更新"
-
1
l.store "Latest posts", "最近發文"
-
1
l.store "Limit to unconfirmed", "限制未許可的"
-
1
l.store "Limit to unconfirmed spam", "限制未許可的垃圾郵件"
-
1
l.store "Location", "位置"
-
1
l.store "Logoff", "退出系統"
-
1
l.store "Macro Filter Help", "巨集篩選器協助"
-
1
l.store "Macros", "巨集"
-
1
l.store "Manage", "管理"
-
1
l.store "Manage Articles", "管理文章"
-
1
l.store "Manage Categories", "分類管理"
-
1
l.store "Manage Pages", "管理頁面"
-
1
l.store "Manage Resources", "管理資源"
-
1
l.store "Manage Text Filters", "管理文字過濾"
-
1
l.store "Markup", "審定"
-
1
l.store "Markup type", "審定類型"
-
1
l.store "MetaData", "MetaData"
-
1
l.store "Metadata was successfully removed.", "Metadata已成功被移除"
-
1
l.store "New post", "新的上傳"
-
1
l.store "Not published by Apple", "非經由Apple所發布"
-
1
l.store "Notification", "回報通知"
-
1
l.store "Notified", "通知"
-
1
l.store "Notify on new articles", "新文章通知"
-
1
l.store "Notify on new comments", "新評論通知"
-
1
l.store "Notify via email", "經由email通知"
-
1
l.store "Number of Articles", "文章編號"
-
1
l.store "Number of Comments", "評論編號"
-
1
l.store "Offline", "下線"
-
1
l.store "Older posts", "從前貼上的"
-
1
l.store "Optional Extended Content", "選擇延續內容"
-
1
l.store "Optional Name", "隨意的命名"
-
1
l.store "Optional extended content", "選擇擴增內容"
-
1
l.store "Page Body", "頁面本文"
-
1
l.store "Page Content", "頁面內容"
-
1
l.store "Page Options", "頁面選擇"
-
1
l.store "Parameters", "參數"
-
1
l.store "Password Confirmation", "密碼確認"
-
1
l.store "Pattern", "樣式"
-
1
l.store "Pictures from", "圖像顯示從~"
-
1
l.store "Post", "Post"
-
1
l.store "Post title", "貼上標題"
-
1
l.store "Post-processing filters", "篩選上傳處理"
-
1
l.store "Posted at", "上傳"
-
1
l.store "Posted date", "貼上日期"
-
1
l.store "Posts", "貼出 "
-
1
l.store "Preview Article", "先前文章"
-
1
l.store "Read", "讀取"
-
1
l.store "Read more", "閱讀更多"
-
1
l.store "Rebuild cached HTML", "重建HTML儲存體"
-
1
l.store "Recent comments", "最近評論"
-
1
l.store "Recent trackbacks", "最近引用"
-
1
l.store "Regex", "正規表示法"
-
1
l.store "Remove iTunes Metadata", "移除iTunes Metadata"
-
1
l.store "Resource MetaData", "MetaData資源"
-
1
l.store "Resource Settings", "資源設定"
-
1
l.store "Save Settings", "儲存設定"
-
1
l.store "See help text for this filter", "查看協助針對此篩選器"
-
1
l.store "Set iTunes metadata for this enclosure", "設定附件的iTunes metadata"
-
1
l.store "Setting for channel", "設定頻道"
-
1
l.store "Settings", "設定"
-
1
l.store "Show Help", "顯示協助"
-
1
l.store "Show this article", "秀出文章"
-
1
l.store "Show this category", "秀出分類"
-
1
l.store "Show this comment", "秀出評論"
-
1
l.store "Show this page", "秀出此頁"
-
1
l.store "Show this pattern", "秀出樣式"
-
1
l.store "Show this user", "顯示使用者"
-
1
l.store "Spam Protection", "垃圾郵件防護"
-
1
l.store "Spam protection", "防止垃圾郵件"
-
1
l.store "Statistics", "統計資訊"
-
1
l.store "String", "字串"
-
1
l.store "Subtitle", "副標題"
-
1
l.store "Summary", "概要"
-
1
l.store "System information", "系統資訊"
-
1
l.store "Text Filter Details", "本文篩選器細節"
-
1
l.store "Text Filters", "本文篩選器"
-
1
l.store "Textfilter", "文章篩選"
-
1
l.store "The below settings act as defaults when you choose to publish an enclosure with iTunes metadata", "當你決定藉iTunes metadata來發佈一個附件,以下行為會被當成預設的"
-
1
l.store "There are %d entries in the cache", "儲存體裡有全部的%d"
-
1
l.store "There are %d entries in the page cache", "有%d個項目在Cache中"
-
1
l.store "Things you can do", "你可以做的事"
-
1
l.store "This option let you choose between the simple admin interface or the complete one, displaying much more options and therefore more complicated to use. For advanced users only.", "只讓進階使用者選擇簡單或完整的界面,顯示更多更複雜的選項"
-
1
l.store "Toggle Extended Content", "切換擴增內容"
-
1
l.store "Type", "型態"
-
1
l.store "Typo admin", "Typo管理員"
-
1
l.store "Typo documentation", "Typo文件"
-
1
l.store "Update your profile or change your password", "請更新您的個人資料或者修改密碼"
-
1
l.store "Upload a new File", "上載一個新檔案"
-
1
l.store "Upload a new Resource", "上傳一個新的資源"
-
1
l.store "Uploaded", "上載"
-
1
l.store "User's articles", "使用者文章"
-
1
l.store "View", "查看"
-
1
l.store "View article on your blog", "在你的部落格查看文章"
-
1
l.store "View comment on your blog", " 查看評論"
-
1
l.store "View page on your blog", "在你的部落格查看頁面"
-
1
l.store "What can you do ?", "你可以做什麼?"
-
1
l.store "Which settings group would you like to edit", "你要修改哪一個設定群組?"
-
1
l.store "Write Page", "撰寫頁面"
-
1
l.store "Write Post", "寫部落格"
-
1
l.store "Write a Page", "編寫本頁"
-
1
l.store "Write an Article", "編寫文章"
-
1
l.store "XML Syndication", "XML簡易整合"
-
1
l.store "You are now logged out of the system", "您已經登出系統"
-
1
l.store "You can add it to the following categories", "你可以新增至以下分類中"
-
1
l.store "You can optionally disable non-Ajax comments. Typo will always use Ajax for comment submission if Javascript is enabled, so non-Ajax comments are either from spammers or users without Javascript.", "你可以隨意地讓non-Ajax評論無效。如果Javascript是有效的,對於提交評論typo會使用ajax,所以non-Ajax的評論是因為使用者或spammper沒有使用Javascript。"
-
1
l.store "add new", "新增"
-
1
l.store "by", "by"
-
1
l.store "by %s on %s", "由%s在%s"
-
1
l.store "log out", "登出"
-
1
l.store "no ", "no "
-
1
l.store "on", "の"
-
1
l.store "seperate with spaces", "空間區分"
-
1
l.store "via email", "經由email"
-
1
l.store "with %s Famfamfam iconset %s", "%s 個Famfamfam iconset %s"
-
1
l.store "your blog", "你的部落格"
-
end
-
#--
-
# Copyright (C) 2005 Leon Breedt
-
#
-
# Permission is hereby granted, free of charge, to any person obtaining
-
# a copy of this software and associated documentation files (the
-
# "Software"), to deal in the Software without restriction, including
-
# without limitation the rights to use, copy, modify, merge, publish,
-
# distribute, sublicense, and/or sell copies of the Software, and to
-
# permit persons to whom the Software is furnished to do so, subject to
-
# the following conditions:
-
#
-
# The above copyright notice and this permission notice shall be
-
# included in all copies or substantial portions of the Software.
-
#
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
#++
-
-
1
require 'action_web_service/support/class_inheritable_options'
-
1
require 'action_web_service/support/signature_types'
-
1
require 'action_web_service/base'
-
1
require 'action_web_service/invocation'
-
1
require 'action_web_service/api'
-
1
require 'action_web_service/casting'
-
1
require 'action_web_service/struct'
-
1
require 'action_web_service/container'
-
1
require 'action_web_service/protocol'
-
1
require 'action_web_service/dispatcher'
-
-
1
ActionWebService::Base.class_eval do
-
1
include ActionWebService::Container::Direct
-
1
include ActionWebService::Invocation
-
end
-
-
1
ActionController::Base.class_eval do
-
1
include ActionWebService::Protocol::Discovery
-
1
include ActionWebService::Protocol::XmlRpc
-
1
include ActionWebService::Container::Direct
-
1
include ActionWebService::Container::Delegated
-
1
include ActionWebService::Dispatcher
-
1
include ActionWebService::Dispatcher::ActionControllerX
-
end
-
1
module ActionWebService # :nodoc:
-
1
module API # :nodoc:
-
# A web service API class specifies the methods that will be available for
-
# invocation for an API. It also contains metadata such as the method type
-
# signature hints.
-
#
-
# It is not intended to be instantiated.
-
#
-
# It is attached to web service implementation classes like
-
# ActionWebService::Base and ActionController::Base derivatives by using
-
# <tt>container.web_service_api</tt>, where <tt>container</tt> is an
-
# ActionController::Base or a ActionWebService::Base.
-
#
-
# See ActionWebService::Container::Direct::ClassMethods for an example
-
# of use.
-
1
class Base
-
# Whether to transform the public API method names into camel-cased names
-
1
class_inheritable_option :inflect_names, true
-
-
# By default only HTTP POST requests are processed
-
1
class_inheritable_option :allowed_http_methods, [ :post ]
-
-
# Whether to allow ActiveRecord::Base models in <tt>:expects</tt>.
-
# The default is +false+; you should be aware of the security implications
-
# of allowing this, and ensure that you don't allow remote callers to
-
# easily overwrite data they should not have access to.
-
1
class_inheritable_option :allow_active_record_expects, false
-
-
# If present, the name of a method to call when the remote caller
-
# tried to call a nonexistent method. Semantically equivalent to
-
# +method_missing+.
-
1
class_inheritable_option :default_api_method
-
-
# Disallow instantiation
-
1
private_class_method :new, :allocate
-
-
1
class << self
-
1
include ActionWebService::SignatureTypes
-
-
# API methods have a +name+, which must be the Ruby method name to use when
-
# performing the invocation on the web service object.
-
#
-
# The signatures for the method input parameters and return value can
-
# by specified in +options+.
-
#
-
# A signature is an array of one or more parameter specifiers.
-
# A parameter specifier can be one of the following:
-
#
-
# * A symbol or string representing one of the Action Web Service base types.
-
# See ActionWebService::SignatureTypes for a canonical list of the base types.
-
# * The Class object of the parameter type
-
# * A single-element Array containing one of the two preceding items. This
-
# will cause Action Web Service to treat the parameter at that position
-
# as an array containing only values of the given type.
-
# * A Hash containing as key the name of the parameter, and as value
-
# one of the three preceding items
-
#
-
# If no method input parameter or method return value signatures are given,
-
# the method is assumed to take no parameters and/or return no values of
-
# interest, and any values that are received by the server will be
-
# discarded and ignored.
-
#
-
# Valid options:
-
# [<tt>:expects</tt>] Signature for the method input parameters
-
# [<tt>:returns</tt>] Signature for the method return value
-
# [<tt>:expects_and_returns</tt>] Signature for both input parameters and return value
-
1
def api_method(name, options={})
-
19
unless options.is_a?(Hash)
-
raise(ActionWebServiceError, "Expected a Hash for options")
-
end
-
19
validate_options([:expects, :returns, :expects_and_returns], options.keys)
-
19
if options[:expects_and_returns]
-
expects = options[:expects_and_returns]
-
returns = options[:expects_and_returns]
-
else
-
19
expects = options[:expects]
-
19
returns = options[:returns]
-
end
-
19
expects = canonical_signature(expects)
-
19
returns = canonical_signature(returns)
-
19
if expects
-
19
expects.each do |type|
-
64
type = type.element_type if type.is_a?(ArrayType)
-
64
if type.type_class.ancestors.include?(ActiveRecord::Base) && !allow_active_record_expects
-
raise(ActionWebServiceError, "ActiveRecord model classes not allowed in :expects")
-
end
-
end
-
end
-
19
name = name.to_sym
-
19
public_name = public_api_method_name(name)
-
19
method = Method.new(name, public_name, expects, returns)
-
19
write_inheritable_hash("api_methods", name => method)
-
19
write_inheritable_hash("api_public_method_names", public_name => name)
-
end
-
-
# Whether the given method name is a service method on this API
-
#
-
# class ProjectsApi < ActionWebService::API::Base
-
# api_method :getCount, :returns => [:int]
-
# end
-
#
-
# ProjectsApi.has_api_method?('GetCount') #=> false
-
# ProjectsApi.has_api_method?(:getCount) #=> true
-
1
def has_api_method?(name)
-
29
api_methods.has_key?(name)
-
end
-
-
# Whether the given public method name has a corresponding service method
-
# on this API
-
#
-
# class ProjectsApi < ActionWebService::API::Base
-
# api_method :getCount, :returns => [:int]
-
# end
-
#
-
# ProjectsApi.has_api_method?(:getCount) #=> false
-
# ProjectsApi.has_api_method?('GetCount') #=> true
-
1
def has_public_api_method?(public_name)
-
33
api_public_method_names.has_key?(public_name)
-
end
-
-
# The corresponding public method name for the given service method name
-
#
-
# ProjectsApi.public_api_method_name('GetCount') #=> "GetCount"
-
# ProjectsApi.public_api_method_name(:getCount) #=> "GetCount"
-
1
def public_api_method_name(name)
-
52
if inflect_names
-
name.to_s.camelize
-
else
-
52
name.to_s
-
end
-
end
-
-
# The corresponding service method name for the given public method name
-
#
-
# class ProjectsApi < ActionWebService::API::Base
-
# api_method :getCount, :returns => [:int]
-
# end
-
#
-
# ProjectsApi.api_method_name('GetCount') #=> :getCount
-
1
def api_method_name(public_name)
-
33
api_public_method_names[public_name]
-
end
-
-
# A Hash containing all service methods on this API, and their
-
# associated metadata.
-
#
-
# class ProjectsApi < ActionWebService::API::Base
-
# api_method :getCount, :returns => [:int]
-
# api_method :getCompletedCount, :returns => [:int]
-
# end
-
#
-
# ProjectsApi.api_methods #=>
-
# {:getCount=>#<ActionWebService::API::Method:0x24379d8 ...>,
-
# :getCompletedCount=>#<ActionWebService::API::Method:0x2437794 ...>}
-
# ProjectsApi.api_methods[:getCount].public_name #=> "GetCount"
-
1
def api_methods
-
126
read_inheritable_attribute("api_methods") || {}
-
end
-
-
# The Method instance for the given public API method name, if any
-
#
-
# class ProjectsApi < ActionWebService::API::Base
-
# api_method :getCount, :returns => [:int]
-
# api_method :getCompletedCount, :returns => [:int]
-
# end
-
#
-
# ProjectsApi.public_api_method_instance('GetCount') #=> <#<ActionWebService::API::Method:0x24379d8 ...>
-
# ProjectsApi.public_api_method_instance(:getCount) #=> nil
-
1
def public_api_method_instance(public_method_name)
-
33
api_method_instance(api_method_name(public_method_name))
-
end
-
-
# The Method instance for the given API method name, if any
-
#
-
# class ProjectsApi < ActionWebService::API::Base
-
# api_method :getCount, :returns => [:int]
-
# api_method :getCompletedCount, :returns => [:int]
-
# end
-
#
-
# ProjectsApi.api_method_instance(:getCount) #=> <ActionWebService::API::Method:0x24379d8 ...>
-
# ProjectsApi.api_method_instance('GetCount') #=> <ActionWebService::API::Method:0x24379d8 ...>
-
1
def api_method_instance(method_name)
-
33
api_methods[method_name]
-
end
-
-
# The Method instance for the default API method, if any
-
1
def default_api_method_instance
-
return nil unless name = default_api_method
-
instance = read_inheritable_attribute("default_api_method_instance")
-
if instance && instance.name == name
-
return instance
-
end
-
instance = Method.new(name, public_api_method_name(name), nil, nil)
-
write_inheritable_attribute("default_api_method_instance", instance)
-
instance
-
end
-
-
1
private
-
1
def api_public_method_names
-
66
read_inheritable_attribute("api_public_method_names") || {}
-
end
-
-
1
def validate_options(valid_option_keys, supplied_option_keys)
-
19
unknown_option_keys = supplied_option_keys - valid_option_keys
-
19
unless unknown_option_keys.empty?
-
raise(ActionWebServiceError, "Unknown options: #{unknown_option_keys}")
-
end
-
end
-
end
-
end
-
-
# Represents an API method and its associated metadata, and provides functionality
-
# to assist in commonly performed API method tasks.
-
1
class Method
-
1
attr :name
-
1
attr :public_name
-
1
attr :expects
-
1
attr :returns
-
-
1
def initialize(name, public_name, expects, returns)
-
19
@name = name
-
19
@public_name = public_name
-
19
@expects = expects
-
19
@returns = returns
-
19
@caster = ActionWebService::Casting::BaseCaster.new(self)
-
end
-
-
# The list of parameter names for this method
-
1
def param_names
-
33
return [] unless @expects
-
163
@expects.map{ |type| type.name }
-
end
-
-
# Casts a set of Ruby values into the expected Ruby values
-
1
def cast_expects(params)
-
33
@caster.cast_expects(params)
-
end
-
-
# Cast a Ruby return value into the expected Ruby value
-
1
def cast_returns(return_value)
-
29
@caster.cast_returns(return_value)
-
end
-
-
# Returns the index of the first expected parameter
-
# with the given name
-
1
def expects_index_of(param_name)
-
return -1 if @expects.nil?
-
(0..(@expects.length-1)).each do |i|
-
return i if @expects[i].name.to_s == param_name.to_s
-
end
-
-1
-
end
-
-
# Returns a hash keyed by parameter name for the given
-
# parameter list
-
1
def expects_to_hash(params)
-
30
return {} if @expects.nil?
-
30
h = {}
-
159
@expects.zip(params){ |type, param| h[type.name] = param }
-
30
h
-
end
-
-
# Backwards compatibility with previous API
-
1
def [](sig_type)
-
case sig_type
-
when :expects
-
@expects.map{|x| compat_signature_entry(x)}
-
when :returns
-
@returns.map{|x| compat_signature_entry(x)}
-
end
-
end
-
-
# String representation of this method
-
1
def to_s
-
fqn = ""
-
fqn << (@returns ? (@returns[0].human_name(false) + " ") : "void ")
-
fqn << "#{@public_name}("
-
fqn << @expects.map{ |p| p.human_name }.join(", ") if @expects
-
fqn << ")"
-
fqn
-
end
-
-
1
private
-
1
def compat_signature_entry(entry)
-
if entry.array?
-
[compat_signature_entry(entry.element_type)]
-
else
-
if entry.spec.is_a?(Hash)
-
{entry.spec.keys.first => entry.type_class}
-
else
-
entry.type_class
-
end
-
end
-
end
-
end
-
end
-
end
-
1
module ActionWebService # :nodoc:
-
1
class ActionWebServiceError < StandardError # :nodoc:
-
end
-
-
# An Action Web Service object implements a specified API.
-
#
-
# Used by controllers operating in _Delegated_ dispatching mode.
-
#
-
# ==== Example
-
#
-
# class PersonService < ActionWebService::Base
-
# web_service_api PersonAPI
-
#
-
# def find_person(criteria)
-
# Person.find(:all) [...]
-
# end
-
#
-
# def delete_person(id)
-
# Person.find_by_id(id).destroy
-
# end
-
# end
-
#
-
# class PersonAPI < ActionWebService::API::Base
-
# api_method :find_person, :expects => [SearchCriteria], :returns => [[Person]]
-
# api_method :delete_person, :expects => [:int]
-
# end
-
#
-
# class SearchCriteria < ActionWebService::Struct
-
# member :firstname, :string
-
# member :lastname, :string
-
# member :email, :string
-
# end
-
1
class Base
-
# Whether to report exceptions back to the caller in the protocol's exception
-
# format
-
1
class_inheritable_option :web_service_exception_reporting, true
-
end
-
end
-
1
require 'time'
-
1
require 'date'
-
1
require 'xmlrpc/datetime'
-
-
1
module ActionWebService # :nodoc:
-
1
module Casting # :nodoc:
-
1
class CastingError < ActionWebServiceError # :nodoc:
-
end
-
-
# Performs casting of arbitrary values into the correct types for the signature
-
1
class BaseCaster # :nodoc:
-
1
def initialize(api_method)
-
19
@api_method = api_method
-
end
-
-
# Coerces the parameters in +params+ (an Enumerable) into the types
-
# this method expects
-
1
def cast_expects(params)
-
33
self.class.cast_expects(@api_method, params)
-
end
-
-
# Coerces the given +return_value+ into the type returned by this
-
# method
-
1
def cast_returns(return_value)
-
29
self.class.cast_returns(@api_method, return_value)
-
end
-
-
1
class << self
-
1
include ActionWebService::SignatureTypes
-
-
1
def cast_expects(api_method, params) # :nodoc:
-
33
return [] if api_method.expects.nil?
-
163
api_method.expects.zip(params).map{ |type, param| cast(param, type) }
-
end
-
-
1
def cast_returns(api_method, return_value) # :nodoc:
-
29
return nil if api_method.returns.nil?
-
29
cast(return_value, api_method.returns[0])
-
end
-
-
1
def cast(value, signature_type) # :nodoc:
-
379
return value if signature_type.nil? # signature.length != params.length
-
379
return nil if value.nil?
-
# XMLRPC protocol doesn't support nil values. It uses false instead.
-
378
if signature_type.structured? && value.equal?(false)
-
return nil
-
end
-
378
unless signature_type.array? || signature_type.structured?
-
320
return value if canonical_type(value.class) == signature_type.type
-
end
-
103
if signature_type.array?
-
32
unless value.respond_to?(:entries) && !value.is_a?(String)
-
raise CastingError, "Don't know how to cast #{value.class} into #{signature_type.type.inspect}"
-
end
-
32
value.entries.map do |entry|
-
25
cast(entry, signature_type.element_type)
-
end
-
71
elsif signature_type.structured?
-
26
cast_to_structured_type(value, signature_type)
-
45
elsif !signature_type.custom?
-
45
cast_base_type(value, signature_type)
-
end
-
end
-
-
1
def cast_base_type(value, signature_type) # :nodoc:
-
# This is a work-around for the fact that XML-RPC special-cases DateTime values into its own DateTime type
-
# in order to support iso8601 dates. This doesn't work too well for us, so we'll convert it into a Time,
-
# with the caveat that we won't be able to handle pre-1970 dates that are sent to us.
-
#
-
# See http://dev.rubyonrails.com/ticket/2516
-
45
value = value.to_time if value.is_a?(XMLRPC::DateTime)
-
-
45
case signature_type.type
-
when :int
-
Integer(value)
-
when :string
-
30
value.to_s
-
when :base64
-
if value.is_a?(ActionWebService::Base64)
-
value
-
else
-
ActionWebService::Base64.new(value.to_s)
-
end
-
when :bool
-
8
return false if value.nil?
-
8
return value if value == true || value == false
-
8
case value.to_s.downcase
-
when '1', 'true', 'y', 'yes'
-
7
true
-
when '0', 'false', 'n', 'no'
-
1
false
-
else
-
raise CastingError, "Don't know how to cast #{value.class} into Boolean"
-
end
-
when :float
-
Float(value)
-
when :decimal
-
BigDecimal(value.to_s)
-
when :time
-
7
value = "%s/%s/%s %s:%s:%s" % value.values_at(*%w[2 3 1 4 5 6]) if value.kind_of?(Hash)
-
7
if value.kind_of?(Time)
-
7
value
-
elsif value.kind_of?(DateTime)
-
value.to_time
-
else
-
Time.parse(value.to_s)
-
end
-
when :date
-
value = "%s/%s/%s" % value.values_at(*%w[2 3 1]) if value.kind_of?(Hash)
-
value.kind_of?(Date) ? value : Date.parse(value.to_s)
-
when :datetime
-
value = "%s/%s/%s %s:%s:%s" % value.values_at(*%w[2 3 1 4 5 6]) if value.kind_of?(Hash)
-
value.kind_of?(DateTime) ? value : DateTime.parse(value.to_s)
-
end
-
end
-
-
1
def cast_to_structured_type(value, signature_type) # :nodoc:
-
26
obj = nil
-
# if the canonical classes are the same or if the given value is of
-
# a type that is derived from the signature_type do not attempt to
-
# "cast" the value into the signature_type as it's already good to go
-
26
obj = (
-
canonical_type(value.class) == canonical_type(signature_type.type) or
-
derived_from?(signature_type.type, value.class)
-
) ? value : signature_type.type_class.new
-
26
if value.respond_to?(:each_pair)
-
26
klass = signature_type.type_class
-
26
value.each_pair do |name, val|
-
195
type = klass.respond_to?(:member_type) ? klass.member_type(name) : nil
-
195
val = cast(val, type) if type
-
# See http://dev.rubyonrails.com/ticket/3567
-
195
val = val.to_time if val.is_a?(XMLRPC::DateTime)
-
195
obj.__send__("#{name}=", val) if obj.respond_to?(name)
-
end
-
elsif value.respond_to?(:attributes)
-
signature_type.each_member do |name, type|
-
val = value.__send__(name)
-
obj.__send__("#{name}=", cast(val, type)) if obj.respond_to?(name)
-
end
-
else
-
raise CastingError, "Don't know how to cast #{value.class} to #{signature_type.type_class}"
-
end
-
26
obj
-
end
-
end
-
end
-
end
-
end
-
1
require 'action_web_service/container/direct_container'
-
1
require 'action_web_service/container/delegated_container'
-
1
module ActionWebService # :nodoc:
-
1
module Container # :nodoc:
-
1
module Delegated # :nodoc:
-
1
class ContainerError < ActionWebServiceError # :nodoc:
-
end
-
-
1
def self.included(base) # :nodoc:
-
1
base.extend(ClassMethods)
-
1
base.send(:include, ActionWebService::Container::Delegated::InstanceMethods)
-
end
-
-
1
module ClassMethods
-
# Declares a web service that will provide access to the API of the given
-
# +object+. +object+ must be an ActionWebService::Base derivative.
-
#
-
# Web service object creation can either be _immediate_, where the object
-
# instance is given at class definition time, or _deferred_, where
-
# object instantiation is delayed until request time.
-
#
-
# ==== Immediate web service object example
-
#
-
# class ApiController < ApplicationController
-
# web_service_dispatching_mode :delegated
-
#
-
# web_service :person, PersonService.new
-
# end
-
#
-
# For deferred instantiation, a block should be given instead of an
-
# object instance. This block will be executed in controller instance
-
# context, so it can rely on controller instance variables being present.
-
#
-
# ==== Deferred web service object example
-
#
-
# class ApiController < ApplicationController
-
# web_service_dispatching_mode :delegated
-
#
-
# web_service(:person) { PersonService.new(request.env) }
-
# end
-
1
def web_service(name, object=nil, &block)
-
3
if (object && block_given?) || (object.nil? && block.nil?)
-
raise(ContainerError, "either service, or a block must be given")
-
end
-
3
name = name.to_sym
-
3
if block_given?
-
3
info = { name => { :block => block } }
-
else
-
info = { name => { :object => object } }
-
end
-
3
write_inheritable_hash("web_services", info)
-
3
call_web_service_definition_callbacks(self, name, info)
-
end
-
-
# Whether this service contains a service with the given +name+
-
1
def has_web_service?(name)
-
web_services.has_key?(name.to_sym)
-
end
-
-
1
def web_services # :nodoc:
-
99
read_inheritable_attribute("web_services") || {}
-
end
-
-
1
def add_web_service_definition_callback(&block) # :nodoc:
-
1
write_inheritable_array("web_service_definition_callbacks", [block])
-
end
-
-
1
private
-
1
def call_web_service_definition_callbacks(container_class, web_service_name, service_info)
-
3
(read_inheritable_attribute("web_service_definition_callbacks") || []).each do |block|
-
3
block.call(container_class, web_service_name, service_info)
-
end
-
end
-
end
-
-
1
module InstanceMethods # :nodoc:
-
1
def web_service_object(web_service_name)
-
99
info = self.class.web_services[web_service_name.to_sym]
-
99
unless info
-
raise(ContainerError, "no such web service '#{web_service_name}'")
-
end
-
99
service = info[:block]
-
99
service ? self.instance_eval(&service) : info[:object]
-
end
-
end
-
end
-
end
-
end
-
1
module ActionWebService # :nodoc:
-
1
module Container # :nodoc:
-
1
module Direct # :nodoc:
-
1
class ContainerError < ActionWebServiceError # :nodoc:
-
end
-
-
1
def self.included(base) # :nodoc:
-
2
base.extend(ClassMethods)
-
end
-
-
1
module ClassMethods
-
# Attaches ActionWebService API +definition+ to the calling class.
-
#
-
# Action Controllers can have a default associated API, removing the need
-
# to call this method if you follow the Action Web Service naming conventions.
-
#
-
# A controller with a class name of GoogleSearchController will
-
# implicitly load <tt>app/apis/google_search_api.rb</tt>, and expect the
-
# API definition class to be named <tt>GoogleSearchAPI</tt> or
-
# <tt>GoogleSearchApi</tt>.
-
#
-
# ==== Service class example
-
#
-
# class MyService < ActionWebService::Base
-
# web_service_api MyAPI
-
# end
-
#
-
# class MyAPI < ActionWebService::API::Base
-
# ...
-
# end
-
#
-
# ==== Controller class example
-
#
-
# class MyController < ActionController::Base
-
# web_service_api MyAPI
-
# end
-
#
-
# class MyAPI < ActionWebService::API::Base
-
# ...
-
# end
-
1
def web_service_api(definition=nil)
-
165
if definition.nil?
-
162
read_inheritable_attribute("web_service_api")
-
else
-
3
if definition.is_a?(Symbol)
-
raise(ContainerError, "symbols can only be used for #web_service_api inside of a controller")
-
end
-
3
unless definition.respond_to?(:ancestors) && definition.ancestors.include?(ActionWebService::API::Base)
-
raise(ContainerError, "#{definition.to_s} is not a valid API definition")
-
end
-
3
write_inheritable_attribute("web_service_api", definition)
-
3
call_web_service_api_callbacks(self, definition)
-
end
-
end
-
-
1
def add_web_service_api_callback(&block) # :nodoc:
-
1
write_inheritable_array("web_service_api_callbacks", [block])
-
end
-
-
1
private
-
1
def call_web_service_api_callbacks(container_class, definition)
-
3
(read_inheritable_attribute("web_service_api_callbacks") || []).each do |block|
-
block.call(container_class, definition)
-
end
-
end
-
end
-
end
-
end
-
end
-
1
require 'action_web_service/dispatcher/abstract'
-
1
require 'action_web_service/dispatcher/action_controller_dispatcher'
-
1
require 'benchmark'
-
-
1
module ActionWebService # :nodoc:
-
1
module Dispatcher # :nodoc:
-
1
class DispatcherError < ActionWebService::ActionWebServiceError # :nodoc:
-
1
def initialize(*args)
-
4
super
-
4
set_backtrace(caller)
-
end
-
end
-
-
1
def self.included(base) # :nodoc:
-
1
base.class_inheritable_option(:web_service_dispatching_mode, :direct)
-
1
base.class_inheritable_option(:web_service_exception_reporting, true)
-
1
base.send(:include, ActionWebService::Dispatcher::InstanceMethods)
-
end
-
-
1
module InstanceMethods # :nodoc:
-
1
private
-
1
def invoke_web_service_request(protocol_request)
-
33
invocation = web_service_invocation(protocol_request)
-
33
if invocation.is_a?(Array) && protocol_request.protocol.is_a?(Protocol::XmlRpc::XmlRpcProtocol)
-
xmlrpc_multicall_invoke(invocation)
-
else
-
33
web_service_invoke(invocation)
-
end
-
end
-
-
1
def web_service_direct_invoke(invocation)
-
@method_params = invocation.method_ordered_params
-
arity = method(invocation.api_method.name).arity rescue 0
-
if arity < 0 || arity > 0
-
params = @method_params
-
else
-
params = []
-
end
-
web_service_filtered_invoke(invocation, params)
-
end
-
-
1
def web_service_delegated_invoke(invocation)
-
33
web_service_filtered_invoke(invocation, invocation.method_ordered_params)
-
end
-
-
1
def web_service_filtered_invoke(invocation, params)
-
33
cancellation_reason = nil
-
33
return_value = invocation.service.perform_invocation(invocation.api_method.name, params) do |x|
-
cancellation_reason = x
-
end
-
29
if cancellation_reason
-
raise(DispatcherError, "request canceled: #{cancellation_reason}")
-
end
-
29
return_value
-
end
-
-
1
def web_service_invoke(invocation)
-
33
case web_service_dispatching_mode
-
when :direct
-
return_value = web_service_direct_invoke(invocation)
-
when :delegated, :layered
-
33
return_value = web_service_delegated_invoke(invocation)
-
end
-
29
web_service_create_response(invocation.protocol, invocation.protocol_options, invocation.api, invocation.api_method, return_value)
-
end
-
-
1
def xmlrpc_multicall_invoke(invocations)
-
responses = []
-
invocations.each do |invocation|
-
if invocation.is_a?(Hash)
-
responses << [invocation, nil]
-
next
-
end
-
begin
-
case web_service_dispatching_mode
-
when :direct
-
return_value = web_service_direct_invoke(invocation)
-
when :delegated, :layered
-
return_value = web_service_delegated_invoke(invocation)
-
end
-
api_method = invocation.api_method
-
if invocation.api.has_api_method?(api_method.name)
-
response_type = (api_method.returns ? api_method.returns[0] : nil)
-
return_value = api_method.cast_returns(return_value)
-
else
-
response_type = ActionWebService::SignatureTypes.canonical_signature_entry(return_value.class, 0)
-
end
-
responses << [return_value, response_type]
-
rescue Exception => e
-
responses << [{ 'faultCode' => 3, 'faultString' => e.message }, nil]
-
end
-
end
-
invocation = invocations[0]
-
invocation.protocol.encode_multicall_response(responses, invocation.protocol_options)
-
end
-
-
1
def web_service_invocation(request, level = 0)
-
33
public_method_name = request.method_name
-
33
invocation = Invocation.new
-
33
invocation.protocol = request.protocol
-
33
invocation.protocol_options = request.protocol_options
-
33
invocation.service_name = request.service_name
-
33
if web_service_dispatching_mode == :layered
-
33
case invocation.protocol
-
when Protocol::XmlRpc::XmlRpcProtocol
-
33
if request.method_name =~ /^([^\.]+)\.(.*)$/
-
33
public_method_name = $2
-
33
invocation.service_name = $1
-
end
-
end
-
end
-
33
if invocation.protocol.is_a? Protocol::XmlRpc::XmlRpcProtocol
-
33
if public_method_name == 'multicall' && invocation.service_name == 'system'
-
if level > 0
-
raise(DispatcherError, "Recursive system.multicall invocations not allowed")
-
end
-
multicall = request.method_params.dup
-
unless multicall.is_a?(Array) && multicall[0].is_a?(Array)
-
raise(DispatcherError, "Malformed multicall (expected array of Hash elements)")
-
end
-
multicall = multicall[0]
-
return multicall.map do |item|
-
raise(DispatcherError, "Multicall elements must be Hash") unless item.is_a?(Hash)
-
raise(DispatcherError, "Multicall elements must contain a 'methodName' key") unless item.has_key?('methodName')
-
method_name = item['methodName']
-
params = item.has_key?('params') ? item['params'] : []
-
multicall_request = request.dup
-
multicall_request.method_name = method_name
-
multicall_request.method_params = params
-
begin
-
web_service_invocation(multicall_request, level + 1)
-
rescue Exception => e
-
{'faultCode' => 4, 'faultMessage' => e.message}
-
end
-
end
-
end
-
end
-
33
case web_service_dispatching_mode
-
when :direct
-
invocation.api = self.class.web_service_api
-
invocation.service = self
-
when :delegated, :layered
-
33
invocation.service = web_service_object(invocation.service_name)
-
33
invocation.api = invocation.service.class.web_service_api
-
end
-
33
if invocation.api.nil?
-
raise(DispatcherError, "no API attached to #{invocation.service.class}")
-
end
-
33
invocation.protocol.register_api(invocation.api)
-
33
request.api = invocation.api
-
33
if invocation.api.has_public_api_method?(public_method_name)
-
33
invocation.api_method = invocation.api.public_api_method_instance(public_method_name)
-
else
-
if invocation.api.default_api_method.nil?
-
raise(DispatcherError, "no such method '#{public_method_name}' on API #{invocation.api}")
-
else
-
invocation.api_method = invocation.api.default_api_method_instance
-
end
-
end
-
33
if invocation.service.nil?
-
raise(DispatcherError, "no service available for service name #{invocation.service_name}")
-
end
-
33
unless invocation.service.respond_to?(invocation.api_method.name)
-
raise(DispatcherError, "no such method '#{public_method_name}' on API #{invocation.api} (#{invocation.api_method.name})")
-
end
-
33
request.api_method = invocation.api_method
-
33
begin
-
33
invocation.method_ordered_params = invocation.api_method.cast_expects(request.method_params.dup)
-
rescue
-
logger.warn "Casting of method parameters failed" unless logger.nil?
-
invocation.method_ordered_params = request.method_params
-
end
-
33
request.method_params = invocation.method_ordered_params
-
33
invocation.method_named_params = {}
-
33
invocation.api_method.param_names.inject(0) do |m, n|
-
130
invocation.method_named_params[n] = invocation.method_ordered_params[m]
-
130
m + 1
-
end
-
33
invocation
-
end
-
-
1
def web_service_create_response(protocol, protocol_options, api, api_method, return_value)
-
29
if api.has_api_method?(api_method.name)
-
29
return_type = api_method.returns ? api_method.returns[0] : nil
-
29
return_value = api_method.cast_returns(return_value)
-
else
-
return_type = ActionWebService::SignatureTypes.canonical_signature_entry(return_value.class, 0)
-
end
-
29
protocol.encode_response(api_method.public_name + 'Response', return_value, return_type, protocol_options)
-
end
-
-
1
class Invocation # :nodoc:
-
1
attr_accessor :protocol
-
1
attr_accessor :protocol_options
-
1
attr_accessor :service_name
-
1
attr_accessor :api
-
1
attr_accessor :api_method
-
1
attr_accessor :method_ordered_params
-
1
attr_accessor :method_named_params
-
1
attr_accessor :service
-
end
-
end
-
end
-
end
-
1
require 'benchmark'
-
1
require 'builder/xmlmarkup'
-
-
1
module ActionWebService # :nodoc:
-
1
module Dispatcher # :nodoc:
-
1
module ActionControllerX # :nodoc:
-
1
def self.included(base) # :nodoc:
-
1
base.class_eval do
-
1
alias_method :web_service_direct_invoke_without_controller, :web_service_direct_invoke
-
end
-
1
base.add_web_service_api_callback do |klass, api|
-
if klass.web_service_dispatching_mode == :direct
-
klass.class_eval 'def api; dispatch_web_service_request; end'
-
end
-
end
-
1
base.add_web_service_definition_callback do |klass, name, info|
-
3
if klass.web_service_dispatching_mode == :delegated
-
klass.class_eval "def #{name}; dispatch_web_service_request; end"
-
elsif klass.web_service_dispatching_mode == :layered
-
3
klass.class_eval 'def api; dispatch_web_service_request; end'
-
end
-
end
-
1
base.send(:include, ActionWebService::Dispatcher::ActionControllerX::InstanceMethods)
-
end
-
-
1
module InstanceMethods # :nodoc:
-
1
private
-
1
def dispatch_web_service_request
-
33
method = request.method.to_s.upcase
-
33
allowed_methods = self.class.web_service_api ? (self.class.web_service_api.allowed_http_methods || []) : [ :post ]
-
66
allowed_methods = allowed_methods.map{|m| m.to_s.upcase }
-
33
if !allowed_methods.include?(method)
-
render :text => "#{method} not supported", :status=>500
-
return
-
end
-
33
exception = nil
-
33
begin
-
33
ws_request = discover_web_service_request(request)
-
rescue Exception => e
-
exception = e
-
end
-
33
if ws_request
-
33
ws_response = nil
-
33
exception = nil
-
33
bm = Benchmark.measure do
-
33
begin
-
33
ws_response = invoke_web_service_request(ws_request)
-
rescue Exception => e
-
4
exception = e
-
end
-
end
-
33
log_request(ws_request, request.raw_post)
-
33
if exception
-
4
logger.error(exception) unless logger.nil?
-
4
send_web_service_error_response(ws_request, exception)
-
else
-
29
send_web_service_response(ws_response, bm.real)
-
end
-
else
-
exception ||= DispatcherError.new("Malformed XML-RPC protocol message")
-
logger.error(exception) unless logger.nil?
-
send_web_service_error_response(ws_request, exception)
-
end
-
rescue Exception => e
-
logger.error(e) unless logger.nil?
-
send_web_service_error_response(ws_request, e)
-
end
-
-
1
def send_web_service_response(ws_response, elapsed=nil)
-
33
log_response(ws_response, elapsed)
-
33
options = { :type => ws_response.content_type, :disposition => 'inline' }
-
33
send_data(ws_response.body, options)
-
end
-
-
1
def send_web_service_error_response(ws_request, exception)
-
4
if ws_request
-
4
unless self.class.web_service_exception_reporting
-
4
exception = DispatcherError.new("Internal server error (exception raised)")
-
end
-
4
api_method = ws_request.api_method
-
4
public_method_name = api_method ? api_method.public_name : ws_request.method_name
-
4
return_type = ActionWebService::SignatureTypes.canonical_signature_entry(Exception, 0)
-
4
ws_response = ws_request.protocol.encode_response(public_method_name + 'Response', exception, return_type, ws_request.protocol_options)
-
4
send_web_service_response(ws_response)
-
else
-
if self.class.web_service_exception_reporting
-
message = exception.message
-
backtrace = "\nBacktrace:\n#{exception.backtrace.join("\n")}"
-
else
-
message = "Exception raised"
-
backtrace = ""
-
end
-
render :status => 500, :text => "Internal protocol error: #{message}#{backtrace}"
-
end
-
end
-
-
1
def web_service_direct_invoke(invocation)
-
invocation.method_named_params.each do |name, value|
-
params[name] = value
-
end
-
web_service_direct_invoke_without_controller(invocation)
-
end
-
-
1
def log_request(ws_request, body)
-
33
unless logger.nil?
-
33
name = ws_request.method_name
-
33
api_method = ws_request.api_method
-
33
params = ws_request.method_params
-
33
if api_method && api_method.expects
-
163
params = api_method.expects.zip(params).map{ |type, param| "#{type.name}=>#{param.inspect}" }
-
else
-
params = params.map{ |param| param.inspect }
-
end
-
33
service = ws_request.service_name
-
33
logger.debug("\nWeb Service Request: #{name}(#{params.join(", ")}) Entrypoint: #{service}")
-
33
logger.debug(indent(body))
-
end
-
end
-
-
1
def log_response(ws_response, elapsed=nil)
-
33
unless logger.nil?
-
33
elapsed = (elapsed ? " (%f):" % elapsed : ":")
-
33
logger.debug("\nWeb Service Response" + elapsed + " => #{ws_response.return_value.inspect}")
-
33
logger.debug(indent(ws_response.body))
-
end
-
end
-
-
1
def indent(body)
-
144
body.split(/\n/).map{|x| " #{x}"}.join("\n")
-
end
-
end
-
end
-
end
-
end
-
1
module ActionWebService # :nodoc:
-
1
module Invocation # :nodoc:
-
1
class InvocationError < ActionWebService::ActionWebServiceError # :nodoc:
-
end
-
-
1
def self.included(base) # :nodoc:
-
1
base.extend(ClassMethods)
-
1
base.send(:include, ActionWebService::Invocation::InstanceMethods)
-
end
-
-
# Invocation interceptors provide a means to execute custom code before
-
# and after method invocations on ActionWebService::Base objects.
-
#
-
# When running in _Direct_ dispatching mode, ActionController filters
-
# should be used for this functionality instead.
-
#
-
# The semantics of invocation interceptors are the same as ActionController
-
# filters, and accept the same parameters and options.
-
#
-
# A _before_ interceptor can also cancel execution by returning +false+,
-
# or returning a <tt>[false, "cancel reason"]</tt> array if it wishes to supply
-
# a reason for canceling the request.
-
#
-
# === Example
-
#
-
# class CustomService < ActionWebService::Base
-
# before_invocation :intercept_add, :only => [:add]
-
#
-
# def add(a, b)
-
# a + b
-
# end
-
#
-
# private
-
# def intercept_add
-
# return [false, "permission denied"] # cancel it
-
# end
-
# end
-
#
-
# Options:
-
# [<tt>:except</tt>] A list of methods for which the interceptor will NOT be called
-
# [<tt>:only</tt>] A list of methods for which the interceptor WILL be called
-
1
module ClassMethods
-
# Appends the given +interceptors+ to be called
-
# _before_ method invocation.
-
1
def append_before_invocation(*interceptors, &block)
-
3
conditions = extract_conditions!(interceptors)
-
3
interceptors << block if block_given?
-
3
add_interception_conditions(interceptors, conditions)
-
3
append_interceptors_to_chain("before", interceptors)
-
end
-
-
# Prepends the given +interceptors+ to be called
-
# _before_ method invocation.
-
1
def prepend_before_invocation(*interceptors, &block)
-
conditions = extract_conditions!(interceptors)
-
interceptors << block if block_given?
-
add_interception_conditions(interceptors, conditions)
-
prepend_interceptors_to_chain("before", interceptors)
-
end
-
-
1
alias :before_invocation :append_before_invocation
-
-
# Appends the given +interceptors+ to be called
-
# _after_ method invocation.
-
1
def append_after_invocation(*interceptors, &block)
-
conditions = extract_conditions!(interceptors)
-
interceptors << block if block_given?
-
add_interception_conditions(interceptors, conditions)
-
append_interceptors_to_chain("after", interceptors)
-
end
-
-
# Prepends the given +interceptors+ to be called
-
# _after_ method invocation.
-
1
def prepend_after_invocation(*interceptors, &block)
-
conditions = extract_conditions!(interceptors)
-
interceptors << block if block_given?
-
add_interception_conditions(interceptors, conditions)
-
prepend_interceptors_to_chain("after", interceptors)
-
end
-
-
1
alias :after_invocation :append_after_invocation
-
-
1
def before_invocation_interceptors # :nodoc:
-
33
read_inheritable_attribute("before_invocation_interceptors")
-
end
-
-
1
def after_invocation_interceptors # :nodoc:
-
29
read_inheritable_attribute("after_invocation_interceptors")
-
end
-
-
1
def included_intercepted_methods # :nodoc:
-
33
read_inheritable_attribute("included_intercepted_methods") || {}
-
end
-
-
1
def excluded_intercepted_methods # :nodoc:
-
43
read_inheritable_attribute("excluded_intercepted_methods") || {}
-
end
-
-
1
private
-
1
def append_interceptors_to_chain(condition, interceptors)
-
3
write_inheritable_array("#{condition}_invocation_interceptors", interceptors)
-
end
-
-
1
def prepend_interceptors_to_chain(condition, interceptors)
-
interceptors = interceptors + read_inheritable_attribute("#{condition}_invocation_interceptors")
-
write_inheritable_attribute("#{condition}_invocation_interceptors", interceptors)
-
end
-
-
1
def extract_conditions!(interceptors)
-
3
return nil unless interceptors.last.is_a? Hash
-
1
interceptors.pop
-
end
-
-
1
def add_interception_conditions(interceptors, conditions)
-
3
return unless conditions
-
1
included, excluded = conditions[:only], conditions[:except]
-
1
write_inheritable_hash("included_intercepted_methods", condition_hash(interceptors, included)) && return if included
-
1
write_inheritable_hash("excluded_intercepted_methods", condition_hash(interceptors, excluded)) if excluded
-
end
-
-
1
def condition_hash(interceptors, *methods)
-
5
interceptors.inject({}) {|hash, interceptor| hash.merge(interceptor => methods.flatten.map {|method| method.to_s})}
-
end
-
end
-
-
1
module InstanceMethods # :nodoc:
-
1
def self.included(base)
-
1
base.class_eval do
-
1
alias_method_chain :perform_invocation, :interception
-
end
-
end
-
-
1
def perform_invocation_with_interception(method_name, params, &block)
-
33
return if before_invocation(method_name, params, &block) == false
-
30
return_value = perform_invocation_without_interception(method_name, params)
-
29
after_invocation(method_name, params, return_value)
-
29
return_value
-
end
-
-
1
def perform_invocation(method_name, params)
-
30
send(method_name, *params)
-
end
-
-
1
def before_invocation(name, args, &block)
-
33
call_interceptors(self.class.before_invocation_interceptors, [name, args], &block)
-
end
-
-
1
def after_invocation(name, args, result)
-
29
call_interceptors(self.class.after_invocation_interceptors, [name, args, result])
-
end
-
-
1
private
-
-
1
def call_interceptors(interceptors, interceptor_args, &block)
-
62
if interceptors and not interceptors.empty?
-
33
interceptors.each do |interceptor|
-
33
next if method_exempted?(interceptor, interceptor_args[0].to_s)
-
30
result = case
-
when interceptor.is_a?(Symbol)
-
30
self.send(interceptor, *interceptor_args)
-
when interceptor_block?(interceptor)
-
interceptor.call(self, *interceptor_args)
-
when interceptor_class?(interceptor)
-
interceptor.intercept(self, *interceptor_args)
-
else
-
raise(
-
InvocationError,
-
"Interceptors need to be either a symbol, proc/method, or a class implementing a static intercept method"
-
)
-
end
-
27
reason = nil
-
27
if result.is_a?(Array)
-
reason = result[1] if result[1]
-
result = result[0]
-
end
-
27
if result == false
-
block.call(reason) if block && reason
-
return false
-
end
-
end
-
end
-
end
-
-
1
def interceptor_block?(interceptor)
-
interceptor.respond_to?("call") && (interceptor.arity == 3 || interceptor.arity == -1)
-
end
-
-
1
def interceptor_class?(interceptor)
-
interceptor.respond_to?("intercept")
-
end
-
-
1
def method_exempted?(interceptor, method_name)
-
case
-
when self.class.included_intercepted_methods[interceptor]
-
!self.class.included_intercepted_methods[interceptor].include?(method_name)
-
when self.class.excluded_intercepted_methods[interceptor]
-
10
self.class.excluded_intercepted_methods[interceptor].include?(method_name)
-
33
end
-
end
-
end
-
end
-
end
-
1
require 'action_web_service/protocol/abstract'
-
1
require 'action_web_service/protocol/discovery'
-
1
require 'action_web_service/protocol/xmlrpc_protocol'
-
1
module ActionWebService # :nodoc:
-
1
module Protocol # :nodoc:
-
1
class ProtocolError < ActionWebServiceError # :nodoc:
-
end
-
-
1
class AbstractProtocol # :nodoc:
-
1
def setup(controller)
-
end
-
-
1
def decode_action_pack_request(action_pack_request)
-
end
-
-
1
def decode_request(raw_request, service_name, protocol_options={})
-
end
-
-
1
def encode_request(method_name, params, param_types)
-
end
-
-
1
def decode_response(raw_response)
-
end
-
-
1
def encode_response(method_name, return_value, return_type, protocol_options={})
-
end
-
-
1
def register_api(api)
-
end
-
end
-
-
1
class Request # :nodoc:
-
1
attr :protocol
-
1
attr_accessor :method_name
-
1
attr_accessor :method_params
-
1
attr :service_name
-
1
attr_accessor :api
-
1
attr_accessor :api_method
-
1
attr :protocol_options
-
-
1
def initialize(protocol, method_name, method_params, service_name, api=nil, api_method=nil, protocol_options=nil)
-
33
@protocol = protocol
-
33
@method_name = method_name
-
33
@method_params = method_params
-
33
@service_name = service_name
-
33
@api = api
-
33
@api_method = api_method
-
33
@protocol_options = protocol_options || {}
-
end
-
end
-
-
1
class Response # :nodoc:
-
1
attr :body
-
1
attr :content_type
-
1
attr :return_value
-
-
1
def initialize(body, content_type, return_value)
-
33
@body = body
-
33
@content_type = content_type
-
33
@return_value = return_value
-
end
-
end
-
end
-
end
-
1
module ActionWebService # :nodoc:
-
1
module Protocol # :nodoc:
-
1
module Discovery # :nodoc:
-
1
def self.included(base)
-
1
base.extend(ClassMethods)
-
1
base.send(:include, ActionWebService::Protocol::Discovery::InstanceMethods)
-
end
-
-
1
module ClassMethods # :nodoc:
-
1
def register_protocol(klass)
-
1
write_inheritable_array("web_service_protocols", [klass])
-
end
-
end
-
-
1
module InstanceMethods # :nodoc:
-
1
private
-
1
def discover_web_service_request(action_pack_request)
-
33
(self.class.read_inheritable_attribute("web_service_protocols") || []).each do |protocol|
-
33
protocol = protocol.create(self)
-
33
request = protocol.decode_action_pack_request(action_pack_request)
-
33
return request unless request.nil?
-
end
-
nil
-
end
-
end
-
end
-
end
-
end
-
1
require 'xmlrpc/marshal'
-
-
1
module XMLRPC # :nodoc:
-
1
class FaultException # :nodoc:
-
1
alias :message :faultString
-
end
-
-
1
class Create
-
1
def wrong_type(value)
-
if BigDecimal === value
-
[true, value.to_f]
-
else
-
false
-
end
-
end
-
end
-
end
-
-
1
module ActionWebService # :nodoc:
-
1
module Protocol # :nodoc:
-
1
module XmlRpc # :nodoc:
-
1
def self.included(base)
-
1
base.register_protocol(XmlRpcProtocol)
-
end
-
-
1
class XmlRpcProtocol < AbstractProtocol # :nodoc:
-
1
def self.create(controller)
-
64
XmlRpcProtocol.new
-
end
-
-
1
def decode_action_pack_request(action_pack_request)
-
33
service_name = action_pack_request.parameters['action']
-
33
decode_request(action_pack_request.raw_post, service_name)
-
end
-
-
1
def decode_request(raw_request, service_name)
-
33
method_name, params = XMLRPC::Marshal.load_call(raw_request)
-
33
Request.new(self, method_name, params, service_name)
-
rescue
-
return nil
-
end
-
-
1
def encode_request(method_name, params, param_types)
-
33
if param_types
-
33
params = params.dup
-
163
param_types.each_with_index{ |type, i| params[i] = value_to_xmlrpc_wire_format(params[i], type) }
-
end
-
33
XMLRPC::Marshal.dump_call(method_name, *params)
-
end
-
-
1
def decode_response(raw_response)
-
33
[nil, XMLRPC::Marshal.load_response(raw_response)]
-
end
-
-
1
def encode_response(method_name, return_value, return_type, protocol_options={})
-
33
if return_value && return_type
-
33
return_value = value_to_xmlrpc_wire_format(return_value, return_type)
-
end
-
33
return_value = false if return_value.nil?
-
33
raw_response = XMLRPC::Marshal.dump_response(return_value)
-
33
Response.new(raw_response, 'text/xml', return_value)
-
end
-
-
1
def encode_multicall_response(responses, protocol_options={})
-
result = responses.map do |return_value, return_type|
-
if return_value && return_type
-
return_value = value_to_xmlrpc_wire_format(return_value, return_type)
-
return_value = [return_value] unless return_value.nil?
-
end
-
return_value = false if return_value.nil?
-
return_value
-
end
-
raw_response = XMLRPC::Marshal.dump_response(result)
-
Response.new(raw_response, 'text/xml', result)
-
end
-
-
1
def value_to_xmlrpc_wire_format(value, value_type)
-
367
if value_type.array?
-
55
value.map{ |val| value_to_xmlrpc_wire_format(val, value_type.element_type) }
-
else
-
337
if value.is_a?(ActionWebService::Struct)
-
25
struct = {}
-
25
value.class.members.each do |name, type|
-
205
member_value = value[name]
-
205
next if member_value.nil?
-
179
struct[name.to_s] = value_to_xmlrpc_wire_format(member_value, type)
-
end
-
25
struct
-
312
elsif value.is_a?(ActiveRecord::Base)
-
struct = {}
-
value.attributes.each do |key, member_value|
-
next if member_value.nil?
-
struct[key.to_s] = member_value
-
end
-
struct
-
312
elsif value.is_a?(ActionWebService::Base64)
-
XMLRPC::Base64.new(value)
-
312
elsif value.is_a?(Exception) && !value.is_a?(XMLRPC::FaultException)
-
4
XMLRPC::FaultException.new(2, value.message)
-
else
-
308
value
-
end
-
end
-
end
-
end
-
end
-
end
-
end
-
1
module ActionWebService
-
# To send structured types across the wire, derive from ActionWebService::Struct,
-
# and use +member+ to declare structure members.
-
#
-
# ActionWebService::Struct should be used in method signatures when you want to accept or return
-
# structured types that have no Active Record model class representations, or you don't
-
# want to expose your entire Active Record model to remote callers.
-
#
-
# === Example
-
#
-
# class Person < ActionWebService::Struct
-
# member :id, :int
-
# member :firstnames, [:string]
-
# member :lastname, :string
-
# member :email, :string
-
# end
-
# person = Person.new(:id => 5, :firstname => 'john', :lastname => 'doe')
-
#
-
# Active Record model classes are already implicitly supported in method
-
# signatures.
-
1
class Struct
-
# If a Hash is given as argument to an ActionWebService::Struct constructor,
-
# it can contain initial values for the structure member.
-
1
def initialize(values={})
-
37
if values.is_a?(Hash)
-
217
values.map{|k,v| __send__('%s=' % k.to_s, v)}
-
end
-
end
-
-
# The member with the given name
-
1
def [](name)
-
307
send(name.to_s)
-
end
-
-
# Iterates through each member
-
1
def each_pair(&block)
-
14
self.class.members.each do |name, type|
-
88
yield name, self.__send__(name)
-
end
-
end
-
-
1
class << self
-
# Creates a structure member with the specified +name+ and +type+. Generates
-
# accessor methods for reading and writing the member value.
-
1
def member(name, type)
-
42
name = name.to_sym
-
42
type = ActionWebService::SignatureTypes.canonical_signature_entry({ name => type }, 0)
-
42
write_inheritable_hash("struct_members", name => type)
-
class_eval <<-END
-
def #{name}; @#{name}; end
-
def #{name}=(value); @#{name} = value; end
-
42
END
-
end
-
-
1
def members # :nodoc:
-
234
read_inheritable_attribute("struct_members") || {}
-
end
-
-
1
def member_type(name) # :nodoc:
-
195
members[name.to_sym]
-
end
-
end
-
end
-
end
-
1
class Class # :nodoc:
-
1
def class_inheritable_option(sym, default_value=nil)
-
7
write_inheritable_attribute sym, default_value
-
class_eval <<-EOS
-
def self.#{sym}(value=nil)
-
if !value.nil?
-
write_inheritable_attribute(:#{sym}, value)
-
else
-
read_inheritable_attribute(:#{sym})
-
end
-
end
-
-
def self.#{sym}=(value)
-
write_inheritable_attribute(:#{sym}, value)
-
end
-
-
def #{sym}
-
self.class.#{sym}
-
end
-
-
def #{sym}=(value)
-
self.class.#{sym} = value
-
end
-
7
EOS
-
end
-
end
-
1
module ActionWebService # :nodoc:
-
# Action Web Service supports the following base types in a signature:
-
#
-
# [<tt>:int</tt>] Represents an integer value, will be cast to an integer using <tt>Integer(value)</tt>
-
# [<tt>:string</tt>] Represents a string value, will be cast to an string using the <tt>to_s</tt> method on an object
-
# [<tt>:base64</tt>] Represents a Base 64 value, will contain the binary bytes of a Base 64 value sent by the caller
-
# [<tt>:bool</tt>] Represents a boolean value, whatever is passed will be cast to boolean (<tt>true</tt>, '1', 'true', 'y', 'yes' are taken to represent true; <tt>false</tt>, '0', 'false', 'n', 'no' and <tt>nil</tt> represent false)
-
# [<tt>:float</tt>] Represents a floating point value, will be cast to a float using <tt>Float(value)</tt>
-
# [<tt>:time</tt>] Represents a timestamp, will be cast to a <tt>Time</tt> object
-
# [<tt>:datetime</tt>] Represents a timestamp, will be cast to a <tt>DateTime</tt> object
-
# [<tt>:date</tt>] Represents a date, will be cast to a <tt>Date</tt> object
-
#
-
# For structured types, you'll need to pass in the Class objects of
-
# ActionWebService::Struct and ActiveRecord::Base derivatives.
-
1
module SignatureTypes
-
1
def canonical_signature(signature) # :nodoc:
-
38
return nil if signature.nil?
-
38
unless signature.is_a?(Array)
-
raise(ActionWebServiceError, "Expected signature to be an Array")
-
end
-
38
i = -1
-
121
signature.map{ |spec| canonical_signature_entry(spec, i += 1) }
-
end
-
-
1
def canonical_signature_entry(spec, i) # :nodoc:
-
141
orig_spec = spec
-
141
name = "param#{i}"
-
141
if spec.is_a?(Hash)
-
106
name, spec = spec.keys.first, spec.values.first
-
end
-
141
type = spec
-
141
if spec.is_a?(Array)
-
12
ArrayType.new(orig_spec, canonical_signature_entry(spec[0], 0), name)
-
else
-
129
type = canonical_type(type)
-
129
if type.is_a?(Symbol)
-
111
BaseType.new(orig_spec, type, name)
-
else
-
18
StructuredType.new(orig_spec, type, name)
-
end
-
end
-
end
-
-
1
def canonical_type(type) # :nodoc:
-
783
type_name = symbol_name(type) || class_to_type_name(type)
-
783
type = type_name || type
-
783
return canonical_type_name(type) if type.is_a?(Symbol)
-
137
type
-
end
-
-
1
def canonical_type_name(name) # :nodoc:
-
757
name = name.to_sym
-
757
case name
-
when :int, :integer, :fixnum, :bignum
-
112
:int
-
when :string, :text
-
593
:string
-
when :base64, :binary
-
:base64
-
when :bool, :boolean
-
40
:bool
-
when :float, :double
-
:float
-
when :decimal
-
:decimal
-
when :time, :timestamp
-
12
:time
-
when :datetime
-
:datetime
-
when :date
-
:date
-
else
-
raise(TypeError, "#{name} is not a valid base type")
-
end
-
end
-
-
1
def canonical_type_class(type) # :nodoc:
-
141
type = canonical_type(type)
-
141
type.is_a?(Symbol) ? type_name_to_class(type) : type
-
end
-
-
1
def symbol_name(name) # :nodoc:
-
783
return name.to_sym if name.is_a?(Symbol) || name.is_a?(String)
-
nil
-
end
-
-
1
def class_to_type_name(klass) # :nodoc:
-
450
klass = klass.class unless klass.is_a?(Class)
-
450
if derived_from?(Integer, klass) || derived_from?(Fixnum, klass) || derived_from?(Bignum, klass)
-
76
:int
-
374
elsif klass == String
-
225
:string
-
149
elsif klass == Base64
-
:base64
-
149
elsif klass == TrueClass || klass == FalseClass
-
8
:bool
-
141
elsif derived_from?(Float, klass) || derived_from?(Numeric, klass)
-
:float
-
141
elsif klass == Time
-
4
:time
-
137
elsif klass == DateTime
-
:datetime
-
137
elsif klass == Date
-
:date
-
else
-
nil
-
end
-
end
-
-
1
def type_name_to_class(name) # :nodoc:
-
111
case canonical_type_name(name)
-
when :int
-
9
Integer
-
when :string
-
92
String
-
when :base64
-
Base64
-
when :bool
-
8
TrueClass
-
when :float
-
Float
-
when :decimal
-
BigDecimal
-
when :time
-
2
Time
-
when :date
-
Date
-
when :datetime
-
DateTime
-
else
-
nil
-
end
-
end
-
-
1
def derived_from?(ancestor, child) # :nodoc:
-
1492
child.ancestors.include?(ancestor)
-
end
-
-
1
module_function :type_name_to_class
-
1
module_function :class_to_type_name
-
1
module_function :symbol_name
-
1
module_function :canonical_type_class
-
1
module_function :canonical_type_name
-
1
module_function :canonical_type
-
1
module_function :canonical_signature_entry
-
1
module_function :canonical_signature
-
1
module_function :derived_from?
-
end
-
-
1
class BaseType # :nodoc:
-
1
include SignatureTypes
-
-
1
attr :spec
-
1
attr :type
-
1
attr :type_class
-
1
attr :name
-
-
1
def initialize(spec, type, name)
-
141
@spec = spec
-
141
@type = canonical_type(type)
-
141
@type_class = canonical_type_class(@type)
-
141
@name = name
-
end
-
-
1
def custom?
-
45
false
-
end
-
-
1
def array?
-
754
false
-
end
-
-
1
def structured?
-
717
false
-
end
-
-
1
def human_name(show_name=true)
-
type_type = array? ? element_type.type.to_s : self.type.to_s
-
str = array? ? (type_type + '[]') : type_type
-
show_name ? (str + " " + name.to_s) : str
-
end
-
end
-
-
1
class ArrayType < BaseType # :nodoc:
-
1
attr :element_type
-
-
1
def initialize(spec, element_type, name)
-
12
super(spec, Array, name)
-
12
@element_type = element_type
-
end
-
-
1
def custom?
-
true
-
end
-
-
1
def array?
-
94
true
-
end
-
end
-
-
1
class StructuredType < BaseType # :nodoc:
-
1
def each_member
-
if @type_class.respond_to?(:members)
-
@type_class.members.each do |name, type|
-
yield name, type
-
end
-
elsif @type_class.respond_to?(:columns)
-
i = -1
-
@type_class.columns.each do |column|
-
yield column.name, canonical_signature_entry(column.type, i += 1)
-
end
-
end
-
end
-
-
1
def custom?
-
true
-
end
-
-
1
def structured?
-
78
true
-
end
-
end
-
-
1
class Base64 < String # :nodoc:
-
end
-
end
-
1
module ActionWebService # :nodoc:
-
1
module TestInvoke # :nodoc:
-
1
module InstanceMethods # :nodoc:
-
1
private
-
# invoke the specified API method
-
1
def invoke_direct(method_name, *args)
-
invoke_detailed('api', 'api', method_name, *args)
-
end
-
-
1
alias_method :invoke, :invoke_direct
-
-
# invoke the specified API method on the specified service
-
1
def invoke_delegated(service_name, method_name, *args)
-
invoke_detailed(service_name.to_s, service_name, method_name, *args)
-
end
-
-
# invoke the specified layered API method on the correct service
-
1
def invoke_layered(service_name, method_name, *args)
-
33
invoke_detailed('api', service_name, method_name, *args)
-
end
-
-
1
def invoke_detailed(action, service_name, method_name, *args)
-
33
prepare_request(action, service_name, method_name, *args)
-
66
ActionController::Base.class_eval { include ActionController::Testing }
-
33
@controller.process_with_new_base_test(@request, @response)
-
33
decode_rpc_response
-
end
-
-
# ---------------------- internal ---------------------------
-
-
1
def prepare_request(action, service_name, api_method_name, *args)
-
33
@request.recycle!
-
33
@request.request_parameters['action'] = action
-
33
@request.env['REQUEST_METHOD'] = 'POST'
-
33
@request.env['HTTP_CONTENT_TYPE'] = 'text/xml'
-
33
@request.env['RAW_POST_DATA'] = encode_rpc_call(service_name, api_method_name, *args)
-
33
case protocol
-
when ActionWebService::Protocol::XmlRpc::XmlRpcProtocol
-
33
@request.env.delete('HTTP_SOAPACTION')
-
end
-
end
-
-
1
def encode_rpc_call(service_name, api_method_name, *args)
-
33
case @controller.web_service_dispatching_mode
-
when :direct
-
api = @controller.class.web_service_api
-
when :delegated, :layered
-
33
api = @controller.web_service_object(service_name.to_sym).class.web_service_api
-
end
-
33
protocol.register_api(api)
-
33
method = api.api_methods[api_method_name.to_sym]
-
33
raise ArgumentError, "wrong number of arguments for rpc call (#{args.length} for #{method.expects.length})" if method && method.expects && args.length != method.expects.length
-
33
protocol.encode_request(public_method_name(service_name, api_method_name), args.dup, method.expects)
-
end
-
-
1
def decode_rpc_response
-
33
public_method_name, return_value = protocol.decode_response(@response.body)
-
33
exception = is_exception?(return_value)
-
33
raise exception if exception
-
29
return_value
-
end
-
-
1
def public_method_name(service_name, api_method_name)
-
33
public_name = service_api(service_name).public_api_method_name(api_method_name)
-
33
if @controller.web_service_dispatching_mode == :layered && protocol.is_a?(ActionWebService::Protocol::XmlRpc::XmlRpcProtocol)
-
33
'%s.%s' % [service_name.to_s, public_name]
-
else
-
public_name
-
end
-
end
-
-
1
def service_api(service_name)
-
33
case @controller.web_service_dispatching_mode
-
when :direct
-
@controller.class.web_service_api
-
when :delegated, :layered
-
33
@controller.web_service_object(service_name.to_sym).class.web_service_api
-
end
-
end
-
-
1
def protocol
-
198
if @protocol.nil?
-
@protocol ||= ActionWebService::Protocol::XmlRpc::XmlRpcProtocol.create(@controller)
-
else
-
198
case @protocol
-
when :xmlrpc
-
31
@protocol = ActionWebService::Protocol::XmlRpc::XmlRpcProtocol.create(@controller)
-
else
-
167
@protocol
-
end
-
end
-
end
-
-
1
def is_exception?(obj)
-
33
case protocol
-
when :xmlrpc, ActionWebService::Protocol::XmlRpc::XmlRpcProtocol
-
33
obj.is_a?(XMLRPC::FaultException) ? obj : nil
-
end
-
end
-
end
-
end
-
end
-
1
require 'typo_plugins'
-
-
1
module TypoPlugins
-
-
1
class AvatarPlugin < Base
-
-
1
class << self
-
1
def kind
-
6
:avatar
-
end
-
-
1
def get_avatar(options = {})
-
raise NotImplementedError
-
end
-
-
1
def name
-
raise NotImplementedError
-
end
-
end # << self
-
-
end
-
-
end
-
# bare_migration.rb
-
# Scott Bronson
-
# 26 Jan 2006
-
#
-
# This module provides bare ActiveRecord::Base objects for migration
-
# scripts.
-
#
-
# Most migration scripts use model classes to move data. This is
-
# fine when the schema you're migrating from is compatible with your
-
# current models. It's disastrous when your models have changed
-
# significantly.
-
#
-
# This class allows you to use bare ActiveRecord classes in your migrate
-
# scripts instead of your models so there is no chance of compatibility
-
# problems.
-
#
-
# TODO: Make associations work (has_a, etc.) without requiring legacy calls
-
# TODO: If a class already exists when defining it then Ruby just adds to
-
# the existing class. This is why migration objects need to be
-
# named "BareArticle12" instead of just "BareArticle". This stinks
-
# and should be fixed. It won't be an easy fix though.
-
# TODO: I know that STI (inheritance) won't work, but it should be
-
# simple enough to change instantiate_without_callbacks to make
-
# it work.
-
# TODO: Create a test framework.
-
-
-
# To use:
-
#
-
# - Create bare inner classes instead of models in your migration script.
-
# For instance, this would declare a bare object that matches an Article
-
# model:
-
#
-
# class Migration < ActiveRecord::Migration
-
# class BareArticle
-
# include BareMigration
-
# end
-
# ...
-
# end
-
#
-
# Don't forget to nest the declaration of the bare model in order to ensure
-
# that the class name is unique. Another option is to declare it outside
-
# the scope of the migration with a number based on the migration
-
# number, say Bare3Article
-
#
-
# Use set_table_name if the object doesn't calculate its table name
-
# properly.
-
#
-
# - Then, use the bare objects to migrate the data:
-
#
-
# BareArticle.find(:all).each do |a|
-
# a.published = 1
-
# end
-
#
-
# - Now your Article module can change all it wants and your migration
-
# script will still work.
-
-
-
1
module BareMigration
-
1
def self.append_features(base)
-
base.extend(ClassMethods)
-
-
# Set the table name by eradicating "Bare" from the calculated table name.
-
# You can still use set_table_name if this is wrong.
-
base.set_table_name(base.table_name.sub(/.*?bare\d*_?/, ''))
-
-
# Default to ignoring the inheritance column
-
base.inheritance_column = :ignore_inheritance_column
-
end
-
-
1
module ClassMethods
-
# The problem with STI is that it causes AR to instantiate and
-
# return classes DIFFERENT from the class that called find()
-
# (classes that come from your app/models dir, a no-no when
-
# migrating). For now, this routine overrides that behavior
-
# so that you will ONLY get the same class as the one that called
-
# find. (todo: make STI work again)
-
1
def instantiate_without_callbacks(record)
-
object = allocate
-
object.instance_variable_set("@attributes", record)
-
object
-
end
-
-
1
def find_and_update(find_type=:all, *rest, &update_block)
-
self.transaction do
-
self.find(find_type, *rest).each do |item|
-
update_block[item]
-
item.save!
-
end
-
end
-
end
-
end
-
end
-
-
1
class ActiveRecord::Migration
-
1
def self.opposite_of(method)
-
method = method.to_s
-
method.sub!(/^add_/, 'remove_') || method.sub!(/^remove_/, 'add_') ||
-
method.sub!(/^create/, 'drop') || method.sub!(/^drop/, 'create') ||
-
method.sub!(/^rename_column/, 'reverse_columns')
-
end
-
-
1
def self.modify_schema(method, *args)
-
case method.to_s
-
when 'create_table'
-
block = args.last.is_a?(Proc) ? args.pop : Proc.new {|t| nil}
-
create_table *args, &block
-
when 'remove_column'
-
remove_column args[0], args[1]
-
when 'reverse_columns'
-
(table, to_col, from_col) = args
-
rename_column table, from_col, to_col
-
else
-
send(method, *args)
-
end
-
end
-
-
1
def self.modify_tables_and_update(*colspecs, &block)
-
unless colspecs.first.is_a?(Array)
-
colspecs = [colspecs]
-
end
-
begin
-
updated_classes = []
-
colspecs.each do |spec|
-
if spec[1].is_a?(Class)
-
updated_classes << spec[1]
-
spec[1] = spec[1].table_name.to_sym
-
end
-
end
-
colspecs.each {|spec| modify_schema(*spec) }
-
updated_classes.uniq!
-
if updated_classes.size == 1 && block && block.arity == 1
-
say "About to call find_and_update"
-
updated_classes.first.find_and_update(:all, &block)
-
else
-
block.call if block
-
end
-
rescue Exception => e
-
colspecs.reverse.each do |(method, table, column, *rest)|
-
modify_schema(opposite_of(method), table, column, *rest) rescue nil
-
end
-
raise e
-
end
-
end
-
end
-
1
class EmailNotify
-
1
def self.logger
-
@@logger ||= ::Rails.logger || Logger.new(STDOUT)
-
end
-
-
1
def self.send_comment(comment, user)
-
return if user.email.blank?
-
-
begin
-
email = NotificationMailer.comment(comment, user)
-
EmailNotify.send_message(user,email)
-
rescue => err
-
logger.error "Unable to send comment email: #{err.inspect}"
-
end
-
end
-
-
1
def self.send_article(article, user)
-
2
return if user.email.blank?
-
-
2
begin
-
2
email = NotificationMailer.article(article, user)
-
2
EmailNotify.send_message(user,email)
-
rescue => err
-
logger.error "Unable to send article email: #{err.inspect}"
-
end
-
end
-
-
1
def self.send_message(user, email)
-
2
email.content_type = "text/html; charset=utf-8"
-
2
email.deliver
-
end
-
end
-
=begin
-
filemanager.rb
-
Copyright (C) 2008 Leon Li
-
-
You may redistribute it and/or modify it under the same
-
license terms as Ruby.
-
=end
-
1
require 'uri'
-
1
require 'fileutils'
-
1
FM_ID = 'filemanager'
-
1
FM_ROOT = File.join(::Rails.root.to_s, 'vendor', 'plugins', FM_ID)
-
1
FM_PATH_PUBLIC = File.join(FM_ROOT, 'public')
-
-
=begin
-
if $FM_OVERWRITE || ! File.exist?(FM_ROOT)
-
fm_rails_path = File.dirname(File.dirname(__FILE__)) + "/#{FM_ID}"
-
FileUtils.cp_r(fm_rails_path, File.join(::Rails.root.to_s, 'vendor', 'plugins'))
-
FileUtils.cp_r(FM_PATH_PUBLIC, ::Rails.root.to_s)
-
FileUtils.rm_rf(FM_PATH_PUBLIC)
-
end
-
=end
-
-
1
FM_CONFIG_FILE = File.join(::Rails.root.to_s, 'config', 'filemanager.yml')
-
1
unless File.exist?(FM_CONFIG_FILE)
-
FileUtils.cp(File.join(FM_ROOT, 'filemanager.yml'))
-
end
-
1
require "erb"
-
1
require "yaml"
-
1
$FM_PROPERTIES = YAML::load(ERB.new(IO.read(FM_CONFIG_FILE)).result)
-
-
1
FM_IMAGE_TYPES = $FM_PROPERTIES['image.type'].split(' ')
-
1
FM_FLASH_TYPES = $FM_PROPERTIES['flash.type'].split(' ')
-
1
FM_MOVIE_TYPES = $FM_PROPERTIES['movie.type'].split(' ')
-
1
FM_RM_TYPES = $FM_PROPERTIES['rm.type'].split(' ')
-
1
FM_OFFICE_TYPES = $FM_PROPERTIES['office.type'].split(' ')
-
1
FM_EXCEL_TYPES = $FM_PROPERTIES['excel.type'].split(' ')
-
1
FM_WORD_TYPES = $FM_PROPERTIES['word.type'].split(' ')
-
1
FM_PPT_TYPES = $FM_PROPERTIES['ppt.type'].split(' ')
-
1
FM_HELP_TYPES = $FM_PROPERTIES['help.type'].split(' ')
-
1
FM_PLAIN_TYPES = $FM_PROPERTIES['plain.type'].split(' ')
-
1
FM_NONE_TYPES = $FM_PROPERTIES['none.type'].split(' ')
-
1
FM_SUPPORT_TYPES = FM_IMAGE_TYPES + FM_FLASH_TYPES + FM_MOVIE_TYPES + FM_RM_TYPES + FM_OFFICE_TYPES + FM_HELP_TYPES + FM_PLAIN_TYPES
-
1
FM_UNKNOWN_TYPE = 'unknown'
-
-
1
FM_RESOURCES_PATH= $FM_PROPERTIES['resources.path']
-
1
FM_LOCK_PATH = $FM_PROPERTIES['resources.url']
-
1
FM_ENCODING_TO = $FM_PROPERTIES['encoding.to']
-
1
FM_ENCODING_FROM = $FM_PROPERTIES['encoding.from'].nil? ? '' : $FM_PROPERTIES['encoding.from']
-
-
1
FM_TEMP_DIR = $FM_PROPERTIES['temp.dir'].nil? ? File.join(FM_ROOT, 'temp') : $FM_PROPERTIES['temp.dir']
-
-
1
FileUtils.rm_rf(Dir.glob("#{FM_TEMP_DIR}/*"))
-
-
=begin
-
controller.rb
-
Copyright (C) 2008 Leon Li
-
-
You may redistribute it and/or modify it under the same
-
license terms as Ruby.
-
=end
-
1
module Filemanager
-
1
module Controller
-
1
def set_up
-
@lock_path = FM_LOCK_PATH
-
@source = params[:source]
-
@source = decode(@source) unless @source.nil?
-
@path = (params[:path].nil? || ! params[:path].index('..').nil?) ? '' : params[:path]
-
@path = '' if @path == '/'
-
@path = decode(@path)
-
@resource_path = FM_RESOURCES_PATH
-
@current_path = @resource_path + @path
-
@current_file = (File.directory?(@current_path) ? Dir.new(@current_path) : File.new(@current_path))
-
@parent_path = (!@path.blank? && !@path.rindex('/').nil?) ? (@path.rindex('/') == 0 ? '/' : @path[0..(@path.rindex('/')-1)]) : nil
-
@path_suffix = @path.index('.').nil? || @path[-1] == '.' ? '' : @path[@path.index('.')+1..-1].downcase
-
if File.directory?(@current_path)
-
@all_files = Dir.entries(@current_path)
-
@directories = @all_files.map{|f| File.directory?(@current_path + File::SEPARATOR + f) ? f : nil}.compact
-
@files = @all_files.map{|f| File.directory?(@current_path + File::SEPARATOR + f) ? nil : f}.compact
-
@file_total_size = @files.inject(0){|size, f| size + File.size(@current_path + File::SEPARATOR + f)}
-
end
-
end
-
-
1
def tear_off
-
@current_file.close unless @current_file.nil?
-
end
-
-
1
def index
-
-
end
-
-
1
def view
-
# respond_to do |wants|
-
# wants.js { render :text => File.size(@current_path) > 1000000 ? 'File too big' : File.read(@current_path) }
-
# end
-
end
-
-
1
def file_content
-
File.size(@current_path) > 1000000 ? 'File too big' : File.read(@current_path)
-
end
-
-
# def office
-
# render :action=>'excel' if is_excel?
-
# render :action=>'word' if is_word?
-
# render :action=>'ppt' if is_ppt?
-
# render :action=>'help' if is_help?
-
# end
-
-
1
def rename
-
old_name = @current_path + File::SEPARATOR + decode(params[:old_name])
-
new_name = @current_path + File::SEPARATOR + decode(params[:new_name])
-
File.rename(old_name, new_name)
-
success
-
end
-
-
1
def remove
-
FileUtils.rm_rf(@source.map{|s| @current_path + File::SEPARATOR + s})
-
success
-
end
-
-
1
def new_file
-
File.new(@current_path + File::SEPARATOR + decode(params[:new_name]), 'w')
-
success
-
end
-
-
1
def new_folder
-
Dir.mkdir(@current_path + File::SEPARATOR + decode(params[:new_name]))
-
success
-
end
-
-
1
def copy
-
session[:source] = @source.map{|s| @current_path + File::SEPARATOR + s}
-
session[:remove] = false
-
success
-
end
-
-
1
def cut
-
session[:source] = @source.map{|s| @current_path + File::SEPARATOR + s}
-
session[:remove] = true
-
success
-
end
-
-
1
def paste
-
return error if session[:remove].nil? || session[:source].nil?
-
begin
-
session[:remove] == true ? FileUtils.mv(session[:source], @current_path) : FileUtils.cp_r(session[:source], @current_path)
-
session[:remove] = nil
-
session[:source] = nil
-
success
-
rescue => exception
-
result(exception)
-
end
-
-
end
-
-
1
def download
-
now = Time.new
-
now = "#{now.to_i}#{now.usec}"
-
temp_file = FM_TEMP_DIR + File::SEPARATOR + now + '.zip'
-
FileUtils.cd(@current_path) do |dir|
-
system "zip -r #{temp_file} #{@source.map{|s| '"' + s + '"'}.join(' ')}"
-
end
-
send_file(temp_file)
-
end
-
-
-
1
def upload
-
file = params[:upload]
-
filename = decode(file.original_filename)
-
File.open(@current_path + File::SEPARATOR + filename, "wb") do |f|
-
f.write(file.read)
-
end
-
to_index
-
end
-
-
-
-
#TODO
-
1
def adjust_size
-
-
end
-
-
#TODO
-
1
def rotate
-
-
end
-
-
#TODO
-
1
def unzip
-
filename = decode(params[:old_name])
-
FileUtils.cd(@current_path) do |dir|
-
system "unzip -o #{filename}"
-
end
-
to_index
-
end
-
-
1
def to_index
-
redirect_to :action => 'index', :path => encode(@path)
-
end
-
-
1
def success
-
result("SUCCESS")
-
end
-
-
1
def error()
-
result("ERROR")
-
end
-
-
1
def result(message)
-
respond_to do |wants|
-
wants.js { render :text => message }
-
end
-
end
-
-
#methods for view
-
1
def method_missing(method_id, *args)
-
method_id_s = method_id.to_s
-
if method_id_s[0, 3] == 'is_' && method_id_s[-1, 1] == '?'
-
instance_eval %{
-
def #{method_id}(*args)
-
FM_#{method_id_s[3..-2].upcase}_TYPES.include?(@path_suffix)
-
end
-
}
-
send(method_id, *args)
-
else
-
super
-
end
-
end
-
-
1
def transfer(from, to, target)
-
if FM_ENCODING_TO.nil?
-
target
-
else
-
if target.is_a?(Array)
-
target.map{|i| to.nil? ? i : Iconv.conv(to, from, i)}
-
else
-
Iconv.conv(to, from, target)
-
end
-
end
-
end
-
-
1
def encode(target)
-
transfer(FM_ENCODING_FROM, FM_ENCODING_TO, target);
-
end
-
-
1
def decode(target)
-
transfer(FM_ENCODING_TO, FM_ENCODING_FROM, target);
-
end
-
-
1
def hsize(size)
-
size = size/1024
-
if size > 1024
-
size = size/1024
-
size = format('%0.2f',(size)) + ' mb'
-
else
-
size = format('%0.2f', size) + ' kb'
-
end
-
end
-
-
1
def get_file_type(file)
-
type = File.extname(file)
-
-
unless type.blank?
-
type = type.downcase[1..-1]
-
return type if FM_SUPPORT_TYPES.include?(type)
-
end
-
FM_UNKNOWN_TYPE
-
end
-
-
end
-
end
-
1
module Format
-
-
1
EMAIL = /^[_a-z0-9\+\.\-]+\@[_a-z0-9\-]+\.[_a-z0-9\.\-]+$/i
-
1
PASSWORD = /^[\_a-zA-Z0-9\.\-]+$/
-
-
-
# matches everything to the last \ or / in a string.
-
# can chop of path of a filename like this : '/tobi/home/tobi.jpg'.sub(/^.*[\\\/]/,'') => tobi.jpg
-
1
FILENAME = /^.*[\\\/]/
-
-
# good for replacing all special chars with something else, like an underscore
-
1
FILENORMAL = /[^a-zA-Z0-9.]/
-
-
# Laxly matches an IP Address , would also pass numbers > 255 though
-
1
IP_ADDRESS = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/
-
-
# Laxly matches an HTTP(S) URI
-
1
HTTP_URI = /^https?:\/\/\S+$/
-
end
-
# Deprecates the use of the former message interpolation syntax in activerecord
-
# as in "must have %d characters". The new syntax uses explicit variable names
-
# as in "{{value}} must have {{count}} characters".
-
-
1
require 'i18n/backend/simple'
-
1
module I18n
-
1
module Backend
-
1
class Simple
-
1
DEPRECATED_INTERPOLATORS = { '%d' => '{{count}}', '%s' => '{{value}}' }
-
-
1
protected
-
1
def interpolate_with_deprecated_syntax(locale, string, values = {})
-
return string unless string.is_a?(String) && !values.empty?
-
-
string = string.gsub(/%d|%s/) do |s|
-
instead = DEPRECATED_INTERPOLATORS[s]
-
ActiveSupport::Deprecation.warn "using #{s} in messages is deprecated; use #{instead} instead."
-
instead
-
end
-
-
interpolate_without_deprecated_syntax(locale, string, values)
-
end
-
1
alias_method_chain :interpolate, :deprecated_syntax
-
end
-
end
-
end
-
1
module Migrator
-
1
mattr_accessor :offer_migration_when_available
-
1
@@offer_migration_when_available = true
-
-
1
def self.migrations_path
-
"#{::Rails.root.to_s}/db/migrate"
-
end
-
-
1
def self.available_migrations
-
Dir["#{migrations_path}/[0-9]*_*.rb"].sort_by { |name| name.scan(/\d+/).first.to_i }
-
end
-
-
1
def self.current_schema_version
-
ActiveRecord::Migrator.current_version rescue 0
-
end
-
-
1
def self.max_schema_version
-
available_migrations.size
-
end
-
-
1
def self.db_supports_migrations?
-
ActiveRecord::Base.connection.supports_migrations?
-
end
-
-
1
def self.migrate(version = nil)
-
ActiveRecord::Migrator.migrate("#{migrations_path}/", version)
-
end
-
end
-
# Work-around for https://rails.lighthouseapp.com/projects/8994/tickets/4695-string-added-to-rails_helpers-gets-html-escaped
-
1
class ActiveSupport::SafeBuffer
-
12894
def concat(*args) super end
-
1
alias << concat
-
end
-
1
class RouteCache
-
1
@cache = {}
-
-
1
def self.clear
-
10
@cache = {}
-
end
-
-
1
def self.[](key)
-
270
@cache[key.inspect]
-
end
-
-
1
def self.[]=(key,value)
-
136
@cache[key.inspect]=value
-
end
-
end
-
1
class SpamProtection
-
-
1
IP_RBLS = [ 'opm.blitzed.us', 'bsb.empty.us' ]
-
1
HOST_RBLS = [ 'multi.surbl.org', 'bsb.empty.us' ]
-
1
SECOND_LEVEL = [ 'co', 'com', 'net', 'org', 'gov' ]
-
-
1
attr_accessor :this_blog
-
-
1
def initialize(a_blog)
-
27
self.this_blog = a_blog
-
end
-
-
1
def is_spam?(string)
-
101
return false unless this_blog.sp_global
-
101
return false if string.blank?
-
-
61
reason = catch(:hit) do
-
61
case string
-
17
when Format::IP_ADDRESS then self.scan_ip(string)
-
13
when Format::HTTP_URI then self.scan_uris([string]) rescue URI::InvalidURIError
-
31
else self.scan_text(string)
-
end
-
end
-
-
61
if reason
-
5
logger.info("[SP] Hit: #{reason}")
-
5
return true
-
end
-
end
-
-
1
protected
-
-
1
def scan_ip(ip_address)
-
17
logger.info("[SP] Scanning IP #{ip_address}")
-
17
query_rbls(IP_RBLS, ip_address.split('.').reverse.join('.'))
-
end
-
-
1
def scan_text(string)
-
31
uri_list = string.scan(/(http:\/\/[^\s"]+)/m).flatten
-
-
31
check_uri_count(uri_list)
-
30
scan_uris(uri_list)
-
-
28
return false
-
end
-
-
1
def check_uri_count(uris)
-
31
limit = this_blog.sp_url_limit
-
31
return if limit.to_i.zero?
-
31
if uris.size > limit
-
1
throw :hit, "Hard URL Limit hit: #{uris.size} > #{limit}"
-
end
-
end
-
-
1
def scan_uris(uris = [])
-
43
uris.each do |uri|
-
15
host = URI.parse(uri).host rescue next
-
15
return scan_ip(host) if host =~ Format::IP_ADDRESS
-
-
15
host_parts = host.split('.').reverse
-
15
domain = Array.new
-
-
# Check for two level TLD
-
15
(SECOND_LEVEL.include?(host_parts[1]) ? 3:2).times do
-
31
domain.unshift(host_parts.shift)
-
end
-
-
15
logger.info("[SP] Scanning domain #{domain.join('.')}")
-
15
query_rbls(HOST_RBLS, host, domain.join('.'))
-
12
logger.info("[SP] Finished domain scan #{domain.join('.')}")
-
12
return false
-
end
-
end
-
-
1
def query_rbls(rbls, *subdomains)
-
32
rbls.each do |rbl|
-
63
subdomains.uniq.each do |d|
-
67
begin
-
67
response = IPSocket.getaddress([d, rbl].join('.'))
-
6
if response =~ /^127\.0\.0\./
-
4
throw :hit,
-
"#{rbl} positively resolved subdomain #{d} => #{response}"
-
end
-
rescue SocketError
-
# NXDOMAIN response => negative: d is not in RBL
-
end
-
end
-
end
-
28
return false
-
end
-
-
1
def logger
-
49
@logger ||= ::Rails.logger || Logger.new(STDOUT)
-
end
-
end
-
-
1
module ActiveRecord
-
1
module Validations
-
1
module ClassMethods
-
1
def validates_against_spamdb(*attr_names)
-
configuration = { :message => "blocked by SpamProtection" }
-
configuration.update(attr_names.pop) if attr_names.last.is_a?(Hash)
-
-
validates_each(attr_names, configuration) do |record, attr_name, value|
-
record.errors.add(attr_name, configuration[:message]) if SpamProtection.new(record.blog).is_spam?(value)
-
end
-
end
-
end
-
end
-
end
-
1
module Stateful
-
1
class State
-
1
def initialize(model)
-
3628
@model = model
-
end
-
-
1
def to_s
-
self.class.to_s.demodulize
-
end
-
-
1
def exit_hook(target_state)
-
174
::Rails.logger.debug("#{model} leaving state #{self}")
-
end
-
-
1
def enter_hook
-
491
::Rails.logger.debug("#{model} entering state #{self}")
-
end
-
-
-
1
def method_missing(predicate, *args)
-
1048
if predicate.to_s.last == '?'
-
1048
self.class.to_s.demodulize.underscore == predicate.to_s.chop
-
else
-
if block_given?
-
super(predicate, *args) { |*block_args| yield(*block_args) }
-
else
-
super(predicate, *args)
-
end
-
end
-
end
-
-
1
def ==(other_state)
-
2650
self.class == other_state.class
-
end
-
-
1
def hash
-
self.class.hash
-
end
-
-
1
private
-
1
attr_reader :model
-
end
-
-
1
def self.included(base)
-
1
base.extend ClassMethods
-
end
-
-
1
module ClassMethods
-
1
def has_state(field, options = {})
-
2
options.assert_valid_keys(:valid_states, :handles, :initial_state)
-
-
2
unless states = options[:valid_states]
-
raise "You must specify at least one state"
-
end
-
2
states = states.collect &:to_sym
-
-
17
delegations = Set.new(options[:handles]) + states.collect { |value| "#{value}?" }
-
-
2
initial_state = options[:initial_state] || states.first
-
-
2
state_writer_method(field, states, initial_state)
-
2
state_reader_method(field, states, initial_state)
-
-
2
delegations.each do |value|
-
33
delegate value, :to => field
-
end
-
end
-
-
1
def state_reader_method(name, states, initial_state)
-
module_eval <<-end_meth
-
def #{name}(force_reload = false)
-
if @#{name}_obj.nil? || force_reload
-
memento = read_attribute(#{name.inspect}) || #{initial_state.inspect}
-
unless #{states.inspect}.include? memento.to_sym
-
raise \"Invalid state: \#{memento} in the database.\"
-
end
-
@#{name}_obj = self.class.class_eval(memento.to_s.classify).new(self)
-
end
-
@#{name}_obj
-
end
-
2
end_meth
-
end
-
-
1
def state_writer_method(name, states, initial_state)
-
module_eval <<-end_meth
-
def #{name}=(state)
-
case state
-
when Symbol
-
set_#{name}_from_symbol state
-
when String
-
set_#{name}_from_symbol state.to_sym
-
else
-
raise "You must set the state with a symbol or a string"
-
end
-
end
-
-
def set_#{name}_from_symbol(memento)
-
unless #{states.inspect}.include?(memento)
-
raise "Invalid state: " + memento
-
end
-
self[:#{name}] = memento.to_s
-
new_state = self.class.class_eval(memento.to_s.classify).new(self)
-
@#{name}_obj.exit_hook(new_state) if @#{name}_obj
-
@#{name}_obj = new_state
-
@#{name}_obj.enter_hook
-
@#{name}_obj
-
end
-
2
end_meth
-
end
-
end
-
end
-
1
class TextFilterPlugin
-
1
class << self
-
1
include TypoPlugins
-
1
include ActionView::Helpers::TextHelper
-
1
include ActionView::Helpers::TagHelper
-
end
-
-
1
@@filter_map = {}
-
1
def self.inherited(sub)
-
16
if sub.to_s =~ /^Plugin/ or sub.to_s =~ /^Typo::Textfilter/
-
11
name = sub.short_name
-
11
@@filter_map[name] = sub
-
end
-
end
-
-
1
def self.filter_map
-
1791
@@filter_map
-
end
-
-
1
plugin_display_name "Unknown Text Filter"
-
1
plugin_description "Unknown Text Filter Description"
-
-
1
def self.reloadable?
-
false
-
end
-
-
# The name that needs to be used when refering to the plugin's
-
# controller in render statements
-
1
def self.component_name
-
5216
if (self.to_s =~ /::([a-zA-Z]+)$/)
-
5216
"plugins/textfilters/#{$1}".downcase
-
else
-
raise "I don't know who I am: #{self.to_s}"
-
end
-
end
-
-
# The name that's stored in the DB. This is the final chunk of the
-
# controller name, like 'markdown' or 'smartypants'.
-
1
def self.short_name
-
5216
component_name.split(%r{/}).last
-
end
-
-
1
def self.default_config
-
{}
-
end
-
-
1
def self.help_text
-
""
-
end
-
-
1
def self.sanitize(*args)
-
4
(@sanitizer ||= HTML::WhiteListSanitizer.new).sanitize(*args)
-
end
-
-
1
private
-
-
1
def self.default_helper_module!
-
end
-
-
# Look up a config paramater, falling back to the default as needed.
-
1
def self.config_value(params,name)
-
params[:filterparams][name] || default_config[name][:default]
-
end
-
-
1
def self.logger
-
1
@logger ||= ::Rails.logger || Logger.new(STDOUT)
-
end
-
end
-
-
1
class TextFilterPlugin::PostProcess < TextFilterPlugin
-
end
-
-
1
class TextFilterPlugin::Macro < TextFilterPlugin
-
# Utility function -- hand it a XML string like <a href="foo" title="bar">
-
# and it'll give you back { "href" => "foo", "title" => "bar" }
-
1
def self.attributes_parse(string)
-
19
attributes = Hash.new
-
-
19
string.gsub(/([^ =]+="[^"]*")/) do |match|
-
29
key,value = match.split(/=/,2)
-
29
attributes[key] = value.gsub(/"/,'')
-
end
-
-
19
string.gsub(/([^ =]+='[^']*')/) do |match|
-
1
key,value = match.split(/=/,2)
-
1
attributes[key] = value.gsub(/'/,'')
-
end
-
-
19
attributes
-
end
-
-
1
def self.filtertext(blog, content, text, params)
-
1716
filterparams = params[:filterparams]
-
1716
regex1 = /<typo:#{short_name}(?:[ \t][^>]*)?\/>/
-
1716
regex2 = /<typo:#{short_name}([ \t][^>]*)?>(.*?)<\/typo:#{short_name}>/m
-
-
1716
new_text = text.gsub(regex1) do |match|
-
10
macrofilter(blog,content,attributes_parse(match),params)
-
end
-
-
1716
new_text = new_text.gsub(regex2) do |match|
-
7
macrofilter(blog,content,attributes_parse($1.to_s),params,$2.to_s)
-
end
-
-
1716
new_text
-
end
-
end
-
-
1
class TextFilterPlugin::MacroPre < TextFilterPlugin::Macro
-
end
-
-
1
class TextFilterPlugin::MacroPost < TextFilterPlugin::Macro
-
end
-
-
1
class TextFilterPlugin::Markup < TextFilterPlugin
-
end
-
-
1
class Typo
-
1
class Textfilter
-
1
class MacroPost < TextFilterPlugin
-
1
plugin_display_name "MacroPost"
-
1
plugin_description "Macro expansion meta-filter (post-markup)"
-
-
1
def self.filtertext(blog,content,text,params)
-
572
filterparams = params[:filterparams]
-
-
572
macros = TextFilter.available_filter_types['macropost']
-
572
macros.inject(text) do |text,macro|
-
1144
macro.filtertext(blog,content,text,params)
-
end
-
end
-
end
-
-
1
class MacroPre < TextFilterPlugin
-
1
plugin_display_name "MacroPre"
-
1
plugin_description "Macro expansion meta-filter (pre-markup)"
-
-
1
def self.filtertext(blog,content,text,params)
-
572
filterparams = params[:filterparams]
-
-
572
macros = TextFilter.available_filter_types['macropre']
-
572
macros.inject(text) do |text,macro|
-
572
macro.filtertext(blog,content,text,params)
-
end
-
end
-
end
-
end
-
end
-
# coding: utf-8
-
1
class String
-
1
Accents = { ['á','à','â','ä','ã','Ã','Ä','Â','À'] => 'a',
-
['é','è','ê','ë','Ë','É','È','Ê'] => 'e',
-
['í','ì','î','ï','I','Î','Ì'] => 'i',
-
['ó','ò','ô','ö','õ','Õ','Ö','Ô','Ò'] => 'o',
-
['œ'] => 'oe',
-
['ß'] => 'ss',
-
['ú','ù','û','ü','U','Û','Ù'] => 'u',
-
['ç','Ç'] => 'c'
-
}
-
-
1
def to_permalink
-
94
string = self
-
94
Accents.keys.each do |key|
-
752
string = string.tr(key.join, Accents[key])
-
end
-
94
string = string.tr("'", "-")
-
94
string.gsub(/<[^>]*>/, '').to_url
-
end
-
-
# Returns a-string-with-dashes when passed 'a string with dashes'.
-
# All special chars are stripped in the process
-
1
def to_url
-
211
return if self.nil?
-
-
211
s = self.downcase.tr("\"'", '')
-
211
s = s.gsub(/\P{Word}/, ' ')
-
211
s.strip.tr_s(' ', '-').tr(' ', '-').sub(/^$/, "-")
-
end
-
-
# A quick and dirty fix to add 'nofollow' to any urls in a string.
-
# Decidedly unsafe, but will have to do for now.
-
1
def nofollowify
-
197
return self if Blog.default.dofollowify
-
152
self.gsub(/<a(.*?)>/i, '<a\1 rel="nofollow">')
-
end
-
-
# I pass settings as a parametre to avoid calling Blog.default (and another
-
# database call) everytime I want to use to_title
-
# Not sure on this one though.
-
1
def to_title(item, settings, params)
-
179
s = self
-
-
# Tags for params
-
179
s = s.gsub('%date%', parse_date(s, params)) if s =~ /(%date%)/
-
179
s = s.gsub('%search%', params[:q]) if params[:q]
-
179
s = s.gsub('%page%', parse_page(s, params)) if s=~ /(%page%)/
-
-
# Tags for settings
-
179
s = s.gsub('%blog_name%', settings.blog_name)
-
179
s = s.gsub('%blog_subtitle%', settings.blog_subtitle)
-
179
s = s.gsub('%meta_keywords%', settings.meta_keywords)
-
-
# Tags for item
-
179
s = s.gsub('%title%', item.title) if s =~ /(%title)/ and item.respond_to? :title
-
179
s = s.gsub('%excerpt%', (item.body || '').strip_html.slice(0, 160)) if s =~ /(%excerpt%)/ and item.respond_to? :body
-
179
s = s.gsub('%description%', item.description) if s =~ /(%description%)/ and item.respond_to? :description
-
179
s = s.gsub('%name%', item.name) if s =~ /(%name%)/ and item.respond_to? :name
-
179
s = s.gsub('%author%', item.name) if s =~ /(%author%)/ and item.respond_to? :name
-
-
179
if s =~ /(%categories%)/ and item.respond_to? :categories
-
s = s.gsub('%categories%', article.categories.map { |c| c.name }.join(", "))
-
end
-
-
179
if s =~ /(%tags%)/ and item.respond_to? :tags
-
s = s.gsub('%tags%', article.tags.map { |t| t.display_name }.join(", "))
-
end
-
-
# Other
-
179
s = s.gsub('%currentdate%', Time.now.strftime(settings.date_format))
-
179
s = s.gsub('%currenttime%', Time.now.strftime(settings.time_format))
-
179
s = s.gsub('%currentmonth%', Time.now.strftime("%B"))
-
179
s = s.gsub('%currentyear%', Time.now.year.to_s)
-
179
return s
-
end
-
-
# Strips any html markup from a string
-
1
TYPO_TAG_KEY = TYPO_ATTRIBUTE_KEY = /[\w:_-]+/
-
1
TYPO_ATTRIBUTE_VALUE = /(?:[A-Za-z0-9]+|(?:'[^']*?'|"[^"]*?"))/
-
1
TYPO_ATTRIBUTE = /(?:#{TYPO_ATTRIBUTE_KEY}(?:\s*=\s*#{TYPO_ATTRIBUTE_VALUE})?)/
-
1
TYPO_ATTRIBUTES = /(?:#{TYPO_ATTRIBUTE}(?:\s+#{TYPO_ATTRIBUTE})*)/
-
1
TAG = %r{<[!/?\[]?(?:#{TYPO_TAG_KEY}|--)(?:\s+#{TYPO_ATTRIBUTES})?\s*(?:[!/?\]]+|--)?>}
-
1
def strip_html
-
54
self.gsub(TAG, '').gsub(/\s+/, ' ').strip
-
end
-
-
1
private
-
1
def parse_date(string, params)
-
16
return '' unless params[:year]
-
-
14
format = ''
-
14
format << '%A %d ' if params[:day]
-
14
format << '%B ' if params[:month]
-
14
format << '%Y' if params[:year]
-
-
14
string.gsub('%date%', Time.mktime(*params.values_at(:year, :month, :day)).strftime(format))
-
end
-
-
1
def parse_page(string, params)
-
98
return '' unless params[:page]
-
"#{_('page')} #{params[:page]}"
-
end
-
-
end
-
1
module TypoGuid
-
1
def create_guid
-
945
self.guid rescue return true
-
945
return true unless self.guid.blank?
-
-
106
self.guid = UUIDTools::UUID.random_create.to_s
-
end
-
end
-
1
module TypoPlugins
-
# Deprecated?
-
1
def plugin_public_action(action)
-
@@plugin_public_actions ||= []
-
@@plugin_public_actions.push action
-
end
-
-
# Deprecated?
-
1
def plugin_public_actions
-
@@plugin_public_actions
-
end
-
-
# Deprecated?
-
1
def plugin_description(description)
-
12
eval "def self.description; '#{description}'; end"
-
end
-
-
# Deprecated?
-
1
def plugin_display_name(name)
-
12
eval "def self.display_name; '#{name}'; end"
-
end
-
-
1
unless defined?(Keeper) # Something in rails double require this module. Prevent that to keep @@registered integrity
-
1
class Keeper
-
1
KINDS = [:avatar, :textfilter]
-
1
@@registered = {}
-
-
1
class << self
-
1
def available_plugins(kind = nil)
-
1
return @@registered.inspect unless kind
-
1
raise ArgumentError.new "#{kind} is not part of available plugins targets (#{KINDS.map(&:to_s).join(',')})" unless KINDS.include?(kind)
-
1
@@registered ? @@registered[kind] : nil
-
end
-
-
1
def register(klass)
-
1
raise ArgumentError.new "#{klass.kind.to_s} is not part of available plugins targets (#{KINDS.map(&:to_s).join(',')})" unless KINDS.include?(klass.kind)
-
1
@@registered[klass.kind] ||= []
-
1
@@registered[klass.kind] << klass
-
1
Rails.logger.debug("TypoPlugins: just registered plugin #{@@registered[klass.kind]} for #{klass.kind.inspect} target.")
-
1
@@registered[klass.kind]
-
end
-
end
-
-
1
private
-
1
def initialize
-
raise 'No instance allowed.'
-
end
-
end
-
end # Defined
-
-
1
class Base
-
-
1
class << self
-
1
attr_accessor :name
-
1
attr_accessor :description
-
1
attr_reader :registered
-
-
1
def kind
-
:void
-
end
-
-
end # << self
-
-
1
def initialize(h = {})
-
h = h.dup
-
kind = h.delete(:kind)
-
raise ArgumentError.new "#{kind} is not part of available plugins targets (#{KINDS.map(&:to_s).join(',')})" unless KINDS.include?(kind)
-
@kind = kind
-
raise ArgumentError.new "Too many keys in TypoPlugins::Base hash: I don't know what to do with your remainder: #{h.inspect}" unless h.empty?
-
end
-
-
end
-
end
-
1
TYPO_MAJOR = '6'
-
1
TYPO_SUB = '1'
-
1
TYPO_MINOR = '0'
-
1
TYPO_VERSION = "#{TYPO_MAJOR}.#{TYPO_SUB}.#{TYPO_MINOR}"
-
# coding: utf-8
-
1
def render_active_page(page)
-
if controller.action_name == 'view_page'
-
return 'active' if params[:name].to_s == page
-
end
-
end
-
-
1
def render_active_home
-
if controller.controller_name == 'articles' and controller.action_name != 'view_page'
-
if controller.action_name = 'index'
-
return if params[:page]
-
return 'active'
-
end
-
end
-
end
-
-
1
def render_active_articles
-
return if controller.action_name == 'view_page'
-
if controller.controller_name == 'articles' and controller.action_name == 'index'
-
return unless params[:page]
-
end
-
return 'active'
-
end
-
-
1
def category_name(id)
-
category = Category.find_by_permalink(id)
-
category.name
-
end
-
-
1
def display_comments_counter(article)
-
link_to pluralize(article.published_comments.size,
-
_('%d comments', article.published_comments.size),
-
_('%d comment', article.published_comments.size),
-
_('%d comments', article.published_comments.size)), article.permalink_url
-
end
-
-
1
def show_pages_links
-
html = ''.html_safe
-
pages = Page.find(:all, :conditions => {:published => true})
-
pages.each do |page|
-
html << content_tag(:li, link_to_permalink(page, page.title, nil, render_active_page(page.name)))
-
end
-
html
-
end
-
# coding: utf-8
-
1
def render_breadcrumb
-
breadcrumb = _("You are here: ")
-
-
if controller.controller_name == "articles" and controller.action_name == "index" and !params[:page]
-
breadcrumb << this_blog.blog_name
-
else
-
breadcrumb << link_to(this_blog.blog_name, this_blog.base_url)
-
end
-
-
if controller.controller_name == "redirect" and @article
-
if @article.categories.first
-
breadcrumb << " > "
-
breadcrumb << link_to(@article.categories.first.name, @article.categories.first.permalink_url)
-
end
-
breadcrumb << " > "
-
breadcrumb << @article.title
-
elsif controller.controller_name == 'tags'
-
breadcrumb << " > "
-
if params[:id]
-
breadcrumb << link_to(_("Tags"), :controller => 'tags')
-
mytag = Tag.find_by_name(params[:id])
-
breadcrumb << " > #{mytag.display_name}"
-
else
-
breadcrumb << _("Tags")
-
end
-
elsif controller.controller_name == 'categories'
-
breadcrumb << " > "
-
if params[:id]
-
breadcrumb << link_to(_("Categories"), :controller => "categories")
-
mycategory = Category.find_by_permalink(params[:id])
-
breadcrumb << " > #{mycategory.display_name}"
-
else
-
breadcrumb << _("Categories")
-
end
-
elsif controller.action_name == 'view_page'
-
breadcrumb << " > "
-
breadcrumb << @page.title
-
end
-
-
return breadcrumb
-
end
-
-
1
def render_active_page(page)
-
if controller.action_name == 'view_page'
-
return 'active' if params[:name].to_s == page
-
end
-
end
-
-
1
def render_active_home
-
if controller.controller_name == 'articles' and controller.action_name != 'view_page'
-
if controller.action_name = 'index'
-
return if params[:page]
-
return 'active'
-
end
-
end
-
end
-
-
1
def render_active_articles
-
return if controller.action_name == 'view_page'
-
if controller.controller_name == 'articles' and controller.action_name == 'index'
-
return unless params[:page]
-
end
-
return 'active'
-
end
-
-
1
def category_name(id)
-
category = Category.find_by_permalink(id)
-
category.name
-
end
-
-
1
def display_comments_counter(article)
-
link_to pluralize(article.published_comments.size,
-
_('%d comments', article.published_comments.size),
-
_('%d comment', article.published_comments.size),
-
_('%d comments', article.published_comments.size)), article.permalink_url
-
end
-
-
1
def show_pages_links
-
html = ''.html_safe
-
pages = Page.find(:all, :conditions => {:published => true})
-
pages.each do |page|
-
html << content_tag(:li, link_to_permalink(page, page.title, nil, render_active_page(page.name)))
-
end
-
html
-
end
-
#coding: utf-8
-
1
def render_breadcrumb
-
4
breadcrumb = _("You are here: ")
-
-
4
if controller.controller_name == "articles" and controller.action_name == "index" and !params[:page]
-
breadcrumb << this_blog.blog_name
-
else
-
4
breadcrumb << link_to(this_blog.blog_name, this_blog.base_url)
-
end
-
-
4
if controller.controller_name == "redirect" and @article
-
if @article.categories.first
-
breadcrumb << " > "
-
breadcrumb << link_to(@article.categories.first.name, @article.categories.first.permalink_url)
-
end
-
breadcrumb << " > "
-
breadcrumb << @article.title
-
elsif controller.controller_name == 'tags'
-
breadcrumb << " > "
-
if params[:id]
-
breadcrumb << link_to(_("Tags"), :controller => 'tags')
-
mytag = Tag.find_by_name(params[:id])
-
breadcrumb << " > #{mytag.display_name}"
-
else
-
breadcrumb << _("Tags")
-
end
-
elsif controller.controller_name == 'categories'
-
breadcrumb << " > "
-
if params[:id]
-
breadcrumb << link_to(_("Categories"), :controller => "categories")
-
mycategory = Category.find_by_permalink(params[:id])
-
breadcrumb << " > #{mycategory.display_name}"
-
else
-
breadcrumb << _("Categories")
-
end
-
elsif controller.action_name == 'view_page'
-
breadcrumb << " > "
-
breadcrumb << @page.title
-
end
-
-
4
return breadcrumb
-
end
-
-
1
def render_active_page(page)
-
if controller.action_name == 'view_page'
-
return 'active' if params[:name].to_s == page
-
end
-
end
-
-
1
def render_active_home
-
if controller.controller_name == 'articles' and controller.action_name != 'view_page'
-
if controller.action_name = 'index'
-
return if params[:page]
-
return 'active'
-
end
-
end
-
end
-
-
1
def render_active_articles
-
return if controller.action_name == 'view_page'
-
if controller.controller_name == 'articles' and controller.action_name == 'index'
-
return unless params[:page]
-
end
-
return 'active'
-
end
-
-
1
def category_name(id)
-
category = Category.find_by_permalink(id)
-
category.name
-
end
-
-
1
def display_comments_counter(article)
-
link_to pluralize(article.published_comments.size,
-
_('%d comments', article.published_comments.size),
-
_('%d comment', article.published_comments.size),
-
_('%d comments', article.published_comments.size)), article.permalink_url
-
end
-
-
1
def show_pages_links
-
html = ''.html_safe
-
pages = Page.find(:all, :conditions => {:published => true})
-
pages.each do |page|
-
html << content_tag(:li, link_to_permalink(page, page.title, nil, render_active_page(page.name)))
-
end
-
html
-
end
-
# Akismet
-
#
-
# Author:: David Czarnecki
-
# Copyright:: Copyright (c) 2005 - David Czarnecki
-
# License:: BSD
-
#
-
# Heavily modified for Typo by Scott Laird
-
#
-
1
class Akismet
-
1
require 'net/http'
-
1
require 'uri'
-
1
require 'timeout'
-
-
1
STANDARD_HEADERS = {
-
'User-Agent' => "Typo/#{TYPO_VERSION} | Akismet Ruby API/1.0",
-
'Content-Type' => 'application/x-www-form-urlencoded'
-
}
-
-
# Instance variables
-
1
@apiKey
-
1
@blog
-
1
@verifiedKey
-
1
@proxyPort = nil
-
1
@proxyHost = nil
-
-
# Create a new instance of the Akismet class
-
#
-
# apiKey
-
# Your Akismet API key
-
# blog
-
# The blog associated with your api key
-
1
def initialize(apiKey, blog)
-
@apiKey = apiKey
-
@blog = blog
-
@verifiedKey = false
-
end
-
-
# Set proxy information
-
#
-
# proxyHost
-
# Hostname for the proxy to use
-
# proxyPort
-
# Port for the proxy
-
1
def setProxy(proxyHost, proxyPort)
-
@proxyPort = proxyPort
-
@proxyHost = proxyHost
-
end
-
-
# Call to check and verify your API key. You may then call the #hasVerifiedKey method to see if your key has been validated.
-
1
def verifyAPIKey()
-
http = Net::HTTP.new('rest.akismet.com', 80, @proxyHost, @proxyPort)
-
path = '/1.1/verify-key'
-
-
data="key=#{@apiKey}&blog=#{@blog}"
-
-
resp, data = http.post(path, data, STANDARD_HEADERS)
-
@verifiedKey = (data == "valid")
-
end
-
-
# Returns <tt>true</tt> if the API key has been verified, <tt>false</tt> otherwise
-
1
def hasVerifiedKey()
-
return @verifiedKey
-
end
-
-
# Internal call to Akismet. Prepares the data for posting to the Akismet service.
-
#
-
# akismet_function
-
# The Akismet function that should be called
-
# user_ip (required)
-
# IP address of the comment submitter.
-
# user_agent (required)
-
# User agent information.
-
# referrer (note spelling)
-
# The content of the HTTP_REFERER header should be sent here.
-
# permalink
-
# The permanent location of the entry the comment was submitted to.
-
# comment_type
-
# May be blank, comment, trackback, pingback, or a made up value like "registration".
-
# comment_author
-
# Submitted name with the comment
-
# comment_author_email
-
# Submitted email address
-
# comment_author_url
-
# Commenter URL.
-
# comment_content
-
# The content that was submitted.
-
# Other server enviroment variables
-
# In PHP there is an array of enviroment variables called $_SERVER which contains information about the web server itself as well as a key/value for every HTTP header sent with the request. This data is highly useful to Akismet as how the submited content interacts with the server can be very telling, so please include as much information as possible.
-
#options[:user_ip] = user_ip
-
#options[:user_agent] = user_agent
-
#options[:referrer] = referrer
-
#options[:permalink] = permalink
-
#options[:comment_type] = comment_type
-
#options[:comment_author] = comment_author
-
#options[:comment_author_email] = comment_author_email
-
#options[:comment_author_url] = comment_author_url
-
#options[:comment_content] = comment_content
-
-
1
def callAkismet(akismet_function, options = {})
-
result = false
-
begin
-
Timeout.timeout(5) do
-
http = Net::HTTP.new("#{@apiKey}.rest.akismet.com", 80, @proxyHost, @proxyPort)
-
path = "/1.1/#{akismet_function}"
-
-
options[:blog] = @blog
-
params=[]
-
-
options.each_key do |key|
-
params.push "#{key}=#{CGI.escape(options[key].to_s)}"
-
end
-
-
data = params.join('&')
-
resp, data = http.post(path, data, STANDARD_HEADERS)
-
-
unless data == 'true' or data == 'false' or data == ''
-
STDERR.puts "AKISMET error: #{data}"
-
end
-
-
result = (data == "true" or data == '')
-
end
-
rescue => err
-
STDERR.puts "AKISMET exception: #{err}"
-
end
-
-
return result
-
end
-
-
1
protected :callAkismet
-
-
# This is basically the core of everything. This call takes a number of arguments and characteristics about the submitted content and then returns a thumbs up or thumbs down. Almost everything is optional, but performance can drop dramatically if you exclude certain elements.
-
#
-
# user_ip (required)
-
# IP address of the comment submitter.
-
# user_agent (required)
-
# User agent information.
-
# referrer (note spelling)
-
# The content of the HTTP_REFERER header should be sent here.
-
# permalink
-
# The permanent location of the entry the comment was submitted to.
-
# comment_type
-
# May be blank, comment, trackback, pingback, or a made up value like "registration".
-
# comment_author
-
# Submitted name with the comment
-
# comment_author_email
-
# Submitted email address
-
# comment_author_url
-
# Commenter URL.
-
# comment_content
-
# The content that was submitted.
-
# Other server enviroment variables
-
# In PHP there is an array of enviroment variables called $_SERVER which contains information about the web server itself as well as a key/value for every HTTP header sent with the request. This data is highly useful to Akismet as how the submited content interacts with the server can be very telling, so please include as much information as possible.
-
1
def commentCheck(options = {})
-
return callAkismet('comment-check', options)
-
end
-
-
# This call is for submitting comments that weren't marked as spam but should have been. It takes identical arguments as comment check.
-
# The call parameters are the same as for the #commentCheck method.
-
1
def submitSpam(options = {})
-
callAkismet('submit-spam', options)
-
end
-
-
# This call is intended for the marking of false positives, things that were incorrectly marked as spam. It takes identical arguments as comment check and submit spam.
-
# The call parameters are the same as for the #commentCheck method.
-
1
def submitHam(options = {})
-
callAkismet('submit-ham', options)
-
end
-
end
-
1
class AmazonSidebar < Sidebar
-
description \
-
1
"Adds sidebar links to any amazon books linked in the body of the page"
-
1
setting :title, 'Cited books'
-
1
setting :associate_id, 'justasummary-20'
-
1
setting :maxlinks, 4
-
-
1
attr_accessor :asins
-
-
1
def parse_request(contents, request_params)
-
asin_list = contents.to_a.map do |item|
-
item.whiteboard[:asins].to_a
-
end.flatten
-
self.asins = asin_list.uniq.compact[0,maxlinks.to_i]
-
end
-
end
-
1
class ArchivesSidebar < Sidebar
-
1
description 'Displays links to monthly archives'
-
1
setting :show_count, true, :label => 'Show article counts', :input_type => :checkbox
-
1
setting :count, 10, :label => 'Number of Months'
-
-
1
attr_accessor :archives
-
-
1
def self.date_func
-
@date_func ||=
-
begin
-
if Content.connection.kind_of?(ActiveRecord::ConnectionAdapters::SQLiteAdapter)
-
"strftime('%Y', published_at) as year, strftime('%m', published_at) as month"
-
else
-
"extract(year from published_at) as year,extract(month from published_at) as month"
-
end
-
rescue NameError
-
"extract(year from published_at) as year,extract(month from published_at) as month"
-
end
-
end
-
-
1
def parse_request(contents, params)
-
# The original query that was here instantiated every article and every
-
# tag, and then sorted through them just to do a 'group by date'.
-
# Unfortunately, there's no universally-supported way to do this
-
# across all three of our supported DBs. So, we resort to a bit of
-
# DB-specific code.
-
date_func = self.class.date_func
-
-
article_counts = Content.find_by_sql(["select count(*) as count, #{date_func} from contents where type='Article' and published = ? and published_at < ? group by year,month order by year desc,month desc limit ? ",true,Time.now,count.to_i])
-
-
@archives = article_counts.map do |entry|
-
{
-
:name => _(Date::MONTHNAMES[entry.month.to_i]) + " #{entry.year}",
-
:month => entry.month.to_i,
-
:year => entry.year.to_i,
-
:article_count => entry.count
-
}
-
end
-
end
-
end
-
1
class AuthorsSidebar < Sidebar
-
1
display_name "Authors"
-
1
description "Displays a list of authors ordered by name with links to their articles and profile"
-
-
1
setting :count, true, :label => 'Show articles number', :input_type => :checkbox
-
-
1
def authors
-
@authors = User.find(:all, :conditions => {:state => 'active'}, :order => 'name')
-
end
-
end
-
1
require "calendar_date_select/calendar_date_select.rb"
-
1
require "calendar_date_select/form_helpers.rb"
-
1
require "calendar_date_select/includes_helper.rb"
-
-
1
if Object.const_defined?(:Rails) && File.directory?(Rails.root.to_s + "/public")
-
1
ActionView::Helpers::FormHelper.send(:include, CalendarDateSelect::FormHelpers)
-
1
ActionView::Base.send(:include, CalendarDateSelect::FormHelpers)
-
1
ActionView::Base.send(:include, CalendarDateSelect::IncludesHelper)
-
-
# Filthy backwards compatibility hooks... grumble
-
1
if ([Rails::VERSION::MAJOR, Rails::VERSION::MINOR] <=> [2, 2]) == -1
-
ActionView::Helpers::InstanceTag.class_eval do
-
def self.new_with_backwards_compatibility(object_name, method_name, template_object, object = nil)
-
new(object_name, method_name, template_object, nil, object)
-
end
-
end
-
-
else
-
1
ActionView::Helpers::InstanceTag.class_eval do
-
2
class << self; alias new_with_backwards_compatibility new; end
-
end
-
end
-
-
# install files
-
1
unless File.exists?(::Rails.root.to_s + '/public/javascripts/calendar_date_select/calendar_date_select.js')
-
['/public', '/public/javascripts/calendar_date_select', '/public/stylesheets/calendar_date_select', '/public/images/calendar_date_select', '/public/javascripts/calendar_date_select/locale'].each do |dir|
-
source = File.dirname(__FILE__) + "/../#{dir}"
-
dest = RAILS_ROOT + dir
-
FileUtils.mkdir_p(dest)
-
FileUtils.cp(Dir.glob(source+'/*.*'), dest)
-
end
-
end
-
end
-
1
module CalendarDateSelect
-
1
VERSION = '1.16.1'
-
-
1
FORMATS = {
-
:natural => {
-
:date => "%B %d, %Y",
-
:time => " %I:%M %p"
-
},
-
:hyphen_ampm => {
-
:date => "%Y-%m-%d",
-
:time => " %I:%M %p",
-
:javascript_include => "format_hyphen_ampm"
-
},
-
:iso_date => {
-
:date => "%Y-%m-%d",
-
:time => " %H:%M",
-
:javascript_include => "format_iso_date"
-
},
-
:finnish => {
-
:date => "%d.%m.%Y",
-
:time => " %H:%M",
-
:javascript_include => "format_finnish"
-
},
-
:danish => {
-
:date => "%d/%m/%Y",
-
:time => " %H:%M",
-
:javascript_include => "format_danish"
-
},
-
:american => {
-
:date => "%m/%d/%Y",
-
:time => " %I:%M %p",
-
:javascript_include => "format_american"
-
},
-
:euro_24hr => {
-
:date => "%d %B %Y",
-
:time => " %H:%M",
-
:javascript_include => "format_euro_24hr"
-
},
-
:euro_24hr_ymd => {
-
:date => "%Y.%m.%d",
-
:time => " %H:%M",
-
:javascript_include => "format_euro_24hr_ymd"
-
},
-
:italian => {
-
:date => "%d/%m/%Y",
-
:time => " %H:%M",
-
:javascript_include => "format_italian"
-
},
-
:db => {
-
:date => "%Y-%m-%d",
-
:time => " %H:%M",
-
:javascript_include => "format_db"
-
}
-
}
-
-
# Returns the default_options hash. These options are by default provided to every calendar_date_select control, unless otherwise overrided.
-
#
-
# Example:
-
# # At the bottom of config/environment.rb:
-
# CalendarDateSelect.default_options.update(
-
# :popup => "force",
-
# :month_year => "label",
-
# :image => "custom_calendar_picker.png"
-
# )
-
1
def self.default_options
-
8
@calendar_date_select_default_options ||= { :image => "calendar_date_select/calendar.gif" }
-
end
-
-
# Set the picker image. Provide the image url the same way you would provide it to image_tag
-
1
def self.image=(value)
-
default_options[:image] = value
-
end
-
-
# Returns the options for the given format
-
#
-
# Example:
-
# CalendarDateSelect.format = :italian
-
# puts CalendarDateSelect.format[:date]
-
# => "%d/%m/%Y"
-
1
def self.format
-
100
@calendar_date_select_format ||= FORMATS[:natural]
-
end
-
-
# Set the format. To see a list of available formats, CalendarDateSelect::FORMATS.keys, or open lib/calendar_date_select/calendar_date_select.rb
-
#
-
# (e.g. CalendarDateSelect.format = :italian)
-
1
def self.format=(format)
-
raise "CalendarDateSelect: Unrecognized format specification: #{format}" unless FORMATS.has_key?(format)
-
@calendar_date_select_format = FORMATS[format]
-
end
-
-
1
def self.date_format_string(time = false)
-
6
format[:date] + (time ? (format[:time] + " GMT%z (%Z)" ) : "")
-
end
-
-
1
def self.format_date(date)
-
if date.is_a?(Date)
-
date.strftime(date_format_string(false))
-
else
-
date.strftime(date_format_string(true))
-
end
-
end
-
-
1
def self.format_time(value, options = {})
-
return value unless value.respond_to?("strftime")
-
if options[:time]
-
format_date(value)
-
else
-
format_date(value.to_date)
-
end
-
end
-
-
# Detects the presence of time in a date, string
-
1
def self.has_time?(value)
-
case value
-
when DateTime, Time then true
-
when Date then false
-
else
-
/[0-9]:[0-9]{2}/.match(value.to_s) ? true : false
-
end
-
end
-
end
-
# Various helpers available for use in your view
-
1
module CalendarDateSelect::FormHelpers
-
-
# Similar to text_field_tag, but adds a calendar picker, naturally.
-
#
-
# == Arguments
-
#
-
# +name+ - the html name of the tag
-
# +value+ - When specified as a string, uses value verbatim. When Date, DateTime, Time, it converts it to a string basd off the format set by CalendarDateSelect#format=
-
# +options+ - ...
-
#
-
# == Options
-
#
-
# === :embedded
-
#
-
# Put the calendar straight into the form, rather than using a popup type of form.
-
#
-
# <%= calendar_date_select_tag "name", "2007-01-01", :embedded => true %>
-
#
-
# === :hidden
-
#
-
# Use a hidden element instead of a text box for a pop up calendar. Not compatible with :embedded => true. You'll probably want to use an onchange callback to do something with the value.
-
#
-
# <span id='cds_value' />
-
# <%= calendar_date_select_tag "hidden_date_selector", "", :hidden => "true", :onchange => "$('cds_value').update($F(this));" %>
-
#
-
# === :image
-
#
-
# Specify an alternative icon to use for the date picker.
-
#
-
# To use /images/groovy.png:
-
#
-
# <%= calendar_date_select_tag "altered_image", "", :image => "groovy.png" %>
-
#
-
# === :minute_interval
-
#
-
# Specifies the minute interval used in the hour/minute selector. Default is 5.
-
#
-
# <%= calendar_date_select_tag "month_year_selector_label", "", :minute_interval => 15 %>
-
#
-
# === :month_year
-
#
-
# Customize the month and year selectors at the top of the control.
-
#
-
# Valid values:
-
# * "dropdowns" (default) - Use a separate dropdown control for both the month and year
-
# * "label" - Use static text to show the month and the year.
-
#
-
# <%= calendar_date_select_tag "month_year_selector_label", "", :month_year => "label" %>
-
#
-
# === :popup => 'force'
-
#
-
# Forces the user to use the popup calendar by making it's text-box read-only and causing calendar_date_select to override it's default behavior of not allowing selection of a date on a target element that is read-only.
-
#
-
# <%= calendar_date_select_tag "name", "2007-01-01", :popup => "force" %>
-
#
-
# === :time
-
#
-
# Show time in the controls. There's three options:
-
#
-
# * +true+ - show an hour/minute selector.
-
# * +false+ - don't show an hour/minute selector.
-
# * +"mixed"+ - Show an hour/minute selector, but include a "all day" option - allowing them to choose whether or not to specify a time.
-
#
-
# === :year_range
-
#
-
# Limit the year range. You can pass in an array or range of ruby Date/Time objects or FixNum's.
-
#
-
# <%= calendar_date_select_tag "e_date", nil, :year_range => 10.years.ago..0.years.from_now %>
-
# <%= calendar_date_select_tag "e_date", nil, :year_range => [0.years.ago, 10.years.from_now] %>
-
# <%= calendar_date_select_tag "e_date", nil, :year_range => 2000..2007 %>
-
# <%= calendar_date_select_tag "e_date", nil, :year_range => [2000, 2007] %>
-
#
-
# == CALLBACKS
-
#
-
# The following callbacks are available:
-
#
-
# * before_show / after_show
-
# * before_close / after_close
-
# * after_navigate - Called when navigating to a different month. Passes first parameter as a date object refering to the current month viewed
-
# * onchange - Called when the form input value changes
-
#
-
# <%= calendar_date_select_tag "event_demo", "",
-
# :before_show => "log('Calendar Showing');" ,
-
# :after_show => "log('Calendar Shown');" ,
-
# :before_close => "log('Calendar closing');" ,
-
# :after_close => "log('Calendar closed');",
-
# :after_navigate => "log('Current month is ' + (param.getMonth()+1) + '/' + (param.getFullYear()));",
-
# :onchange => "log('value changed to - ' + $F(this));" %>
-
#
-
# }}}
-
#
-
# All callbacks are executed within the context of the target input element. If you'd like to access the CalendarDateSelect object itself, you can access it via "this.calendar_date_select".
-
#
-
# For example:
-
#
-
# <%= calendar_date_select_tag "event_demo", "", :after_navigate => "alert('The current selected month is ' + this.calendar_date_select.selected_date.getMonth());" ,
-
1
def calendar_date_select_tag( name, value = nil, options = {})
-
image, options, javascript_options = calendar_date_select_process_options(options)
-
value = CalendarDateSelect.format_time(value, javascript_options)
-
-
javascript_options.delete(:format)
-
-
options[:id] ||= name
-
tag = javascript_options[:hidden] || javascript_options[:embedded] ?
-
hidden_field_tag(name, value, options) :
-
text_field_tag(name, value, options)
-
-
calendar_date_select_output(tag, image, options, javascript_options)
-
end
-
-
# Similar to the difference between +text_field_tag+ and +text_field+, this method behaves like +text_field+
-
#
-
# It receives the same options as +calendar_date_select_tag+. Need for time selection is automatically detected by checking the corresponding column meta information of Model#columns_hash
-
1
def calendar_date_select(object, method, options={})
-
8
obj = options[:object] || instance_variable_get("@#{object}")
-
-
8
if !options.include?(:time) && obj.class.respond_to?("columns_hash")
-
8
column_type = obj.class.columns_hash[method.to_s].type if obj.class.columns_hash.include?(method.to_s)
-
8
options[:time] = true if column_type == :datetime
-
end
-
-
8
use_time = options[:time]
-
-
8
if options[:time].to_s=="mixed"
-
use_time = false if Date===(obj.respond_to?(method) && obj.send(method))
-
end
-
-
8
image, options, javascript_options = calendar_date_select_process_options(options)
-
-
8
options[:value] ||=
-
if(obj.respond_to?(method) && obj.send(method).respond_to?(:strftime))
-
6
obj.send(method).strftime(CalendarDateSelect.date_format_string(use_time))
-
elsif obj.respond_to?("#{method}_before_type_cast")
-
2
obj.send("#{method}_before_type_cast")
-
elsif obj.respond_to?(method)
-
obj.send(method).to_s
-
else
-
begin
-
obj.send(method).strftime(CalendarDateSelect.date_format_string(use_time))
-
rescue
-
nil
-
end
-
end
-
-
8
tag = ActionView::Helpers::InstanceTag.new_with_backwards_compatibility(object, method, self, options.delete(:object))
-
calendar_date_select_output(
-
8
tag.to_input_field_tag( (javascript_options[:hidden] || javascript_options[:embedded]) ? "hidden" : "text", options),
-
image,
-
options,
-
javascript_options
-
)
-
end
-
-
1
private
-
# extracts any options passed into calendar date select, appropriating them to either the Javascript call or the html tag.
-
1
def calendar_date_select_process_options(options)
-
8
options, javascript_options = CalendarDateSelect.default_options.merge(options), {}
-
8
image = options.delete(:image)
-
8
callbacks = [:before_show, :before_close, :after_show, :after_close, :after_navigate]
-
8
for key in [:default_time, :time, :valid_date_check, :embedded, :buttons, :clear_button, :format, :year_range, :month_year, :popup, :hidden, :minute_interval] + callbacks
-
136
javascript_options[key] = options.delete(key) if options.has_key?(key)
-
end
-
-
8
if (default_time = javascript_options[:default_time])
-
if default_time.respond_to?(:strftime)
-
javascript_options[:default_time] = "new Date('#{default_time.strftime(CalendarDateSelect.date_format_string(true))}')"
-
else
-
javascript_options[:default_time] = "function() { return #{default_time} }"
-
end
-
end
-
-
# if passing in mixed, pad it with single quotes
-
8
javascript_options[:time] = "'mixed'" if javascript_options[:time].to_s=="mixed"
-
8
javascript_options[:month_year] = "'#{javascript_options[:month_year]}'" if javascript_options[:month_year]
-
-
# if we are forcing the popup, automatically set the readonly property on the input control.
-
8
if javascript_options[:popup].to_s == "force"
-
javascript_options[:popup] = "'force'"
-
options[:readonly] = true
-
end
-
-
8
if (vdc=javascript_options.delete(:valid_date_check))
-
if vdc.include?(";") || vdc.include?("function")
-
raise ArgumentError, ":valid_date_check function is missing a 'return' statement. Try something like: :valid_date_check => 'if (date > new(Date)) return true; else return false;'" unless vdc.include?("return");
-
end
-
-
vdc = "return(#{vdc})" unless vdc.include?("return")
-
vdc = "function(date) { #{vdc} }" unless vdc.include?("function")
-
javascript_options[:valid_date_check] = vdc
-
end
-
-
8
javascript_options[:popup_by] ||= "this" if javascript_options[:hidden]
-
-
# surround any callbacks with a function, if not already done so
-
8
for key in callbacks
-
40
javascript_options[key] = "function(param) { #{javascript_options[key]} }" unless javascript_options[key].include?("function") if javascript_options[key]
-
end
-
-
8
javascript_options[:year_range] = format_year_range(javascript_options[:year_range] || 10)
-
8
[image, options, javascript_options]
-
end
-
-
1
def calendar_date_select_output(input, image, options = {}, javascript_options = {})
-
8
out = input
-
8
if javascript_options[:embedded]
-
uniq_id = "cds_placeholder_#{(rand*100000).to_i}"
-
# we need to be able to locate the target input element, so lets stick an invisible span tag here we can easily locate
-
out << content_tag(:span, nil, :style => "display: none; position: absolute;", :id => uniq_id)
-
out << javascript_tag("new CalendarDateSelect( $('#{uniq_id}').previous(), #{options_for_javascript(javascript_options)} ); ")
-
else
-
8
out << " "
-
out << image_tag(image,
-
:onclick => "new CalendarDateSelect( $(this).previous(), #{options_for_javascript(javascript_options)} );",
-
:style => 'border:0px; cursor:pointer;',
-
8
:class=>'calendar_date_select_popup_icon')
-
end
-
8
out
-
end
-
-
1
def format_year_range(year) # nodoc
-
8
return year unless year.respond_to?(:first)
-
return "[#{year.first}, #{year.last}]" unless year.first.respond_to?(:strftime)
-
return "[#{year.first.year}, #{year.last.year}]"
-
end
-
end
-
-
# Helper method for form builders
-
1
module ActionView
-
1
module Helpers
-
1
class FormBuilder
-
1
def calendar_date_select(method, options = {})
-
@template.calendar_date_select(@object_name, method, options.merge(:object => @object))
-
end
-
end
-
end
-
end
-
1
module CalendarDateSelect::IncludesHelper
-
# returns the selected calendar_date_select stylesheet (not an array)
-
1
def calendar_date_select_stylesheets(options = {})
-
88
options.assert_valid_keys(:style)
-
88
"calendar_date_select/#{options[:style] || "default"}"
-
end
-
-
# returns an array of javascripts needed for the selected locale, date_format, and calendar control itself.
-
1
def calendar_date_select_javascripts(options = {})
-
88
options.assert_valid_keys(:locale)
-
88
files = ["calendar_date_select/calendar_date_select"]
-
88
files << "calendar_date_select/locale/#{options[:locale]}" if options[:locale]
-
88
files << "calendar_date_select/#{CalendarDateSelect.format[:javascript_include]}" if CalendarDateSelect.format[:javascript_include]
-
88
files
-
end
-
-
# returns html necessary to load javascript and css to make calendar_date_select work
-
1
def calendar_date_select_includes(*args)
-
88
return "" if @cds_already_included
-
88
@cds_already_included=true
-
-
88
options = (Hash === args.last) ? args.pop : {}
-
88
options.assert_valid_keys(:style, :locale)
-
88
options[:style] ||= args.shift
-
-
javascript_include_tag(*calendar_date_select_javascripts(:locale => options[:locale])) + "\n" +
-
88
stylesheet_link_tag(*calendar_date_select_stylesheets(:style => options[:style])) + "\n"
-
end
-
end
-
1
class CategorySidebar < Sidebar
-
1
display_name "Categories"
-
1
description "List of categories for this blog"
-
-
1
setting :count, true, :label => 'Show article count', :input_type => :checkbox
-
1
setting :empty, false, :label => 'Show empty categories', :input_type => :checkbox
-
-
1
def categories
-
@categories ||= Category.find_all_with_article_counters
-
end
-
end
-
1
require 'action_view/helpers'
-
1
require 'active_support/i18n'
-
1
require 'active_support/core_ext/enumerable'
-
1
require 'active_support/core_ext/object/blank'
-
-
1
module ActionView
-
1
module Helpers
-
# The Active Record Helper makes it easier to create forms for records kept in instance variables. The most far-reaching is the +form+
-
# method that creates a complete form for all the basic content types of the record (not associations or aggregations, though). This
-
# is a great way of making the record quickly available for editing, but likely to prove lackluster for a complicated real-world form.
-
# In that case, it's better to use the +input+ method and the specialized +form+ methods in link:classes/ActionView/Helpers/FormHelper.html
-
1
module DynamicForm
-
# Returns a default input tag for the type of object returned by the method. For example, if <tt>@post</tt>
-
# has an attribute +title+ mapped to a +VARCHAR+ column that holds "Hello World":
-
#
-
# input("post", "title")
-
# # => <input id="post_title" name="post[title]" size="30" type="text" value="Hello World" />
-
1
def input(record_name, method, options = {})
-
InstanceTag.new(record_name, method, self).to_tag(options)
-
end
-
-
# Returns an entire form with all needed input tags for a specified Active Record object. For example, if <tt>@post</tt>
-
# has attributes named +title+ of type +VARCHAR+ and +body+ of type +TEXT+ then
-
#
-
# form("post")
-
#
-
# would yield a form like the following (modulus formatting):
-
#
-
# <form action='/posts/create' method='post'>
-
# <p>
-
# <label for="post_title">Title</label><br />
-
# <input id="post_title" name="post[title]" size="30" type="text" value="Hello World" />
-
# </p>
-
# <p>
-
# <label for="post_body">Body</label><br />
-
# <textarea cols="40" id="post_body" name="post[body]" rows="20"></textarea>
-
# </p>
-
# <input name="commit" type="submit" value="Create" />
-
# </form>
-
#
-
# It's possible to specialize the form builder by using a different action name and by supplying another
-
# block renderer. For example, if <tt>@entry</tt> has an attribute +message+ of type +VARCHAR+ then
-
#
-
# form("entry",
-
# :action => "sign",
-
# :input_block => Proc.new { |record, column|
-
# "#{column.human_name}: #{input(record, column.name)}<br />"
-
# })
-
#
-
# would yield a form like the following (modulus formatting):
-
#
-
# <form action="/entries/sign" method="post">
-
# Message:
-
# <input id="entry_message" name="entry[message]" size="30" type="text" /><br />
-
# <input name="commit" type="submit" value="Sign" />
-
# </form>
-
#
-
# It's also possible to add additional content to the form by giving it a block, such as:
-
#
-
# form("entry", :action => "sign") do |form|
-
# form << content_tag("b", "Department")
-
# form << collection_select("department", "id", @departments, "id", "name")
-
# end
-
#
-
# The following options are available:
-
#
-
# * <tt>:action</tt> - The action used when submitting the form (default: +create+ if a new record, otherwise +update+).
-
# * <tt>:input_block</tt> - Specialize the output using a different block, see above.
-
# * <tt>:method</tt> - The method used when submitting the form (default: +post+).
-
# * <tt>:multipart</tt> - Whether to change the enctype of the form to "multipart/form-data", used when uploading a file (default: +false+).
-
# * <tt>:submit_value</tt> - The text of the submit button (default: "Create" if a new record, otherwise "Update").
-
1
def form(record_name, options = {})
-
record = instance_variable_get("@#{record_name}")
-
record = convert_to_model(record)
-
-
options = options.symbolize_keys
-
options[:action] ||= record.persisted? ? "update" : "create"
-
action = url_for(:action => options[:action], :id => record)
-
-
submit_value = options[:submit_value] || options[:action].gsub(/[^\w]/, '').capitalize
-
-
contents = form_tag({:action => action}, :method =>(options[:method] || 'post'), :enctype => options[:multipart] ? 'multipart/form-data': nil)
-
contents.safe_concat hidden_field(record_name, :id) if record.persisted?
-
contents.safe_concat all_input_tags(record, record_name, options)
-
yield contents if block_given?
-
contents.safe_concat submit_tag(submit_value)
-
contents.safe_concat('</form>')
-
end
-
-
# Returns a string containing the error message attached to the +method+ on the +object+ if one exists.
-
# This error message is wrapped in a <tt>DIV</tt> tag by default or with <tt>:html_tag</tt> if specified,
-
# which can be extended to include a <tt>:prepend_text</tt> and/or <tt>:append_text</tt> (to properly explain
-
# the error), and a <tt>:css_class</tt> to style it accordingly. +object+ should either be the name of an
-
# instance variable or the actual object. The method can be passed in either as a string or a symbol.
-
# As an example, let's say you have a model <tt>@post</tt> that has an error message on the +title+ attribute:
-
#
-
# <%= error_message_on "post", "title" %>
-
# # => <div class="formError">can't be empty</div>
-
#
-
# <%= error_message_on @post, :title %>
-
# # => <div class="formError">can't be empty</div>
-
#
-
# <%= error_message_on "post", "title",
-
# :prepend_text => "Title simply ",
-
# :append_text => " (or it won't work).",
-
# :html_tag => "span",
-
# :css_class => "inputError" %>
-
# # => <span class="inputError">Title simply can't be empty (or it won't work).</span>
-
1
def error_message_on(object, method, *args)
-
options = args.extract_options!
-
unless args.empty?
-
ActiveSupport::Deprecation.warn('error_message_on takes an option hash instead of separate ' +
-
'prepend_text, append_text, html_tag, and css_class arguments', caller)
-
-
options[:prepend_text] = args[0] || ''
-
options[:append_text] = args[1] || ''
-
options[:html_tag] = args[2] || 'div'
-
options[:css_class] = args[3] || 'formError'
-
end
-
options.reverse_merge!(:prepend_text => '', :append_text => '', :html_tag => 'div', :css_class => 'formError')
-
-
object = convert_to_model(object)
-
-
if (obj = (object.respond_to?(:errors) ? object : instance_variable_get("@#{object}"))) &&
-
(errors = obj.errors[method]).presence
-
content_tag(options[:html_tag],
-
(options[:prepend_text].html_safe << errors.first).safe_concat(options[:append_text]),
-
:class => options[:css_class]
-
)
-
else
-
''
-
end
-
end
-
-
# Returns a string with a <tt>DIV</tt> containing all of the error messages for the objects located as instance variables by the names
-
# given. If more than one object is specified, the errors for the objects are displayed in the order that the object names are
-
# provided.
-
#
-
# This <tt>DIV</tt> can be tailored by the following options:
-
#
-
# * <tt>:header_tag</tt> - Used for the header of the error div (default: "h2").
-
# * <tt>:id</tt> - The id of the error div (default: "errorExplanation").
-
# * <tt>:class</tt> - The class of the error div (default: "errorExplanation").
-
# * <tt>:object</tt> - The object (or array of objects) for which to display errors,
-
# if you need to escape the instance variable convention.
-
# * <tt>:object_name</tt> - The object name to use in the header, or any text that you prefer.
-
# If <tt>:object_name</tt> is not set, the name of the first object will be used.
-
# * <tt>:header_message</tt> - The message in the header of the error div. Pass +nil+
-
# or an empty string to avoid the header message altogether. (Default: "X errors
-
# prohibited this object from being saved").
-
# * <tt>:message</tt> - The explanation message after the header message and before
-
# the error list. Pass +nil+ or an empty string to avoid the explanation message
-
# altogether. (Default: "There were problems with the following fields:").
-
#
-
# To specify the display for one object, you simply provide its name as a parameter.
-
# For example, for the <tt>@user</tt> model:
-
#
-
# error_messages_for 'user'
-
#
-
# You can also supply an object:
-
#
-
# error_messages_for @user
-
#
-
# This will use the last part of the model name in the presentation. For instance, if
-
# this is a MyKlass::User object, this will use "user" as the name in the String. This
-
# is taken from MyKlass::User.model_name.human, which can be overridden.
-
#
-
# To specify more than one object, you simply list them; optionally, you can add an extra <tt>:object_name</tt> parameter, which
-
# will be the name used in the header message:
-
#
-
# error_messages_for 'user_common', 'user', :object_name => 'user'
-
#
-
# You can also use a number of objects, which will have the same naming semantics
-
# as a single object.
-
#
-
# error_messages_for @user, @post
-
#
-
# If the objects cannot be located as instance variables, you can add an extra <tt>:object</tt> parameter which gives the actual
-
# object (or array of objects to use):
-
#
-
# error_messages_for 'user', :object => @question.user
-
#
-
# NOTE: This is a pre-packaged presentation of the errors with embedded strings and a certain HTML structure. If what
-
# you need is significantly different from the default presentation, it makes plenty of sense to access the <tt>object.errors</tt>
-
# instance yourself and set it up. View the source of this method to see how easy it is.
-
1
def error_messages_for(*params)
-
33
options = params.extract_options!.symbolize_keys
-
-
33
objects = Array.wrap(options.delete(:object) || params).map do |object|
-
33
object = instance_variable_get("@#{object}") unless object.respond_to?(:to_model)
-
33
object = convert_to_model(object)
-
-
33
if object.class.respond_to?(:model_name)
-
33
options[:object_name] ||= object.class.model_name.human.downcase
-
end
-
-
33
object
-
end
-
-
33
objects.compact!
-
66
count = objects.inject(0) {|sum, object| sum + object.errors.count }
-
-
33
unless count.zero?
-
html = {}
-
[:id, :class].each do |key|
-
if options.include?(key)
-
value = options[key]
-
html[key] = value unless value.blank?
-
else
-
html[key] = 'errorExplanation'
-
end
-
end
-
options[:object_name] ||= params.first
-
-
I18n.with_options :locale => options[:locale], :scope => [:errors, :template] do |locale|
-
header_message = if options.include?(:header_message)
-
options[:header_message]
-
else
-
locale.t :header, :count => count, :model => options[:object_name].to_s.gsub('_', ' ')
-
end
-
-
message = options.include?(:message) ? options[:message] : locale.t(:body)
-
-
error_messages = objects.sum do |object|
-
object.errors.full_messages.map do |msg|
-
content_tag(:li, msg)
-
end
-
end.join.html_safe
-
-
contents = ''
-
contents << content_tag(options[:header_tag] || :h2, header_message) unless header_message.blank?
-
contents << content_tag(:p, message) unless message.blank?
-
contents << content_tag(:ul, error_messages)
-
-
content_tag(:div, contents.html_safe, html)
-
end
-
else
-
33
''
-
end
-
end
-
-
1
private
-
-
1
def all_input_tags(record, record_name, options)
-
input_block = options[:input_block] || default_input_block
-
record.class.content_columns.collect{ |column| input_block.call(record_name, column) }.join("\n")
-
end
-
-
1
def default_input_block
-
Proc.new { |record, column| %(<p><label for="#{record}_#{column.name}">#{column.human_name}</label><br />#{input(record, column.name)}</p>) }
-
end
-
-
1
module InstanceTagMethods
-
1
def to_tag(options = {})
-
case column_type
-
when :string
-
field_type = @method_name.include?("password") ? "password" : "text"
-
to_input_field_tag(field_type, options)
-
when :text
-
to_text_area_tag(options)
-
when :integer, :float, :decimal
-
to_input_field_tag("text", options)
-
when :date
-
to_date_select_tag(options)
-
when :datetime, :timestamp
-
to_datetime_select_tag(options)
-
when :time
-
to_time_select_tag(options)
-
when :boolean
-
to_boolean_select_tag(options)
-
end
-
end
-
-
1
def column_type
-
object.send(:column_for_attribute, @method_name).type
-
end
-
end
-
-
1
module FormBuilderMethods
-
1
def error_message_on(method, *args)
-
@template.error_message_on(@object || @object_name, method, *args)
-
end
-
-
1
def error_messages(options = {})
-
@template.error_messages_for(@object_name, objectify_options(options))
-
end
-
end
-
end
-
-
1
class InstanceTag
-
1
include DynamicForm::InstanceTagMethods
-
end
-
-
1
class FormBuilder
-
1
include DynamicForm::FormBuilderMethods
-
end
-
end
-
end
-
-
1
I18n.load_path << File.expand_path("../../locale/en.yml", __FILE__)
-
1
require 'fileutils'
-
1
require 'tmpdir'
-
-
1
class CkeditorController < ActionController::Base
-
-
1
UPLOAD_FOLDER = "/files"
-
1
UPLOAD_ROOT = ::Rails.root.to_s + "/public" + UPLOAD_FOLDER
-
-
1
MIME_TYPES = [
-
"image/jpg",
-
"image/jpeg",
-
"image/pjpeg",
-
"image/gif",
-
"image/png",
-
"image/x-png",
-
"application/x-shockwave-flash"
-
]
-
-
##############################################################################
-
# XML Response string
-
#
-
1
RXML = <<-EOL
-
xml.instruct!
-
#=> <?xml version="1.0" encoding="utf-8" ?>
-
xml.Connector("command" => params[:command], "resourceType" => 'File') do
-
xml.CurrentFolder("url" => @ck_url, "path" => params[:currentFolder])
-
xml.Folders do
-
@folders.each do |folder|
-
xml.Folder("name" => folder)
-
end
-
end if !@folders.nil?
-
xml.Files do
-
@files.keys.sort.each do |f|
-
xml.File("name" => f, "size" => @files[f])
-
end
-
end if !@files.nil?
-
xml.Error("number" => @errorNumber) if !@errorNumber.nil?
-
end
-
EOL
-
-
##############################################################################
-
# figure out who needs to handle this request
-
#
-
1
def command
-
if params[:command] == 'CheckAuthentication'
-
return true
-
end
-
if params[:command] == 'GetFoldersAndFiles' || params[:command] == 'GetFolders'
-
get_folders_and_files
-
elsif params[:command] == 'CreateFolder'
-
create_folder
-
elsif params[:command] == 'FileUpload'
-
upload_file
-
end
-
-
render :inline => RXML, :type => :rxml unless params[:command] == 'FileUpload'
-
end
-
-
1
def get_folders_and_files(include_files = true)
-
@folders = Array.new
-
@files = {}
-
begin
-
@ck_url = upload_directory_path
-
@current_folder = current_directory_path
-
Dir.entries(@current_folder).each do |entry|
-
next if entry =~ /^\./
-
path = @current_folder + entry
-
@folders.push entry if FileTest.directory?(path)
-
@files[entry] = (File.size(path) / 1024) if (include_files and FileTest.file?(path))
-
end
-
rescue => e
-
@errorNumber = 110 if @errorNumber.nil?
-
end
-
end
-
-
1
def create_folder
-
begin
-
@ck_url = current_directory_path
-
path = @ck_url + params[:newFolderName]
-
if !(File.stat(@ck_url).writable?)
-
@errorNumber = 103
-
elsif params[:newFolderName] !~ /[\w\d\s]+/
-
@errorNumber = 102
-
elsif FileTest.exists?(path)
-
@errorNumber = 101
-
else
-
Dir.mkdir(path,0775)
-
@errorNumber = 0
-
end
-
rescue => e
-
@errorNumber = 110 if @errorNumber.nil?
-
end
-
end
-
-
1
def upload_file
-
begin
-
load_file_from_params
-
-
Resource.create(:filename => @new_file.original_filename, :mime => @ftype, :created_at => Time.now)
-
copy_tmp_file(@new_file) if mime_types_ok(@ftype)
-
rescue => e
-
@errorNumber = 110 if @errorNumber.nil?
-
end
-
-
render :text => %Q'
-
<html>
-
<body>
-
<script type="text/javascript">
-
window.parent.CKEDITOR.tools.callFunction(#{params[:CKEditorFuncNum]}, "#{uploaded_file_path}");
-
</script>
-
</body>
-
</html>'
-
end
-
-
1
def upload
-
self.upload_file
-
end
-
-
#################################################################################
-
#
-
1
private
-
-
1
def load_file_from_params
-
@new_file = check_file(params[:upload])
-
@ck_url = upload_directory_path
-
@ftype = @new_file.content_type.strip
-
log_upload
-
end
-
-
##############################################################################
-
# Chek if mime type is included in the MIME_TYPES
-
#
-
1
def mime_types_ok(ftype)
-
mime_type_ok = MIME_TYPES.include?(ftype) ? true : false
-
if mime_type_ok
-
@errorNumber = 0
-
else
-
@errorNumber = 202
-
raise_mime_type_and_show_msg(ftype)
-
end
-
mime_type_ok
-
end
-
-
##############################################################################
-
# Raise and exception, log the msg error and show msg
-
#
-
1
def raise_mime_type_and_show_msg(ftype)
-
msg = "#{ftype} is invalid MIME type"
-
puts msg;
-
raise msg;
-
log msg
-
end
-
-
##############################################################################
-
# Copy tmp file to current_directory_path/tmp_file.original_filename
-
#
-
1
def copy_tmp_file(tmp_file)
-
path = current_directory_path + "/" + tmp_file.original_filename
-
File.open(path, "wb", 0664) do |fp|
-
FileUtils.copy_stream(tmp_file, fp)
-
end
-
end
-
-
##############################################################################
-
# Puts a messgae info in the current log, only if ::Rails.env is 'development'
-
#
-
1
def log(str)
-
::Rails.logger.info str if ::Rails.env == 'development'
-
end
-
-
##############################################################################
-
# Puts some data in the current log
-
#
-
1
def log_upload
-
log "CKEDITOR - #{params[:upload]}"
-
log "CKEDITOR - UPLOAD_FOLDER: #{UPLOAD_FOLDER}"
-
log "CKEDITOR - #{File.expand_path(::Rails.root.to_s)}/public#{UPLOAD_FOLDER}/" +
-
"#{@new_file.original_filename}"
-
end
-
-
##############################################################################
-
# Returns the filesystem folder with the current folder
-
#
-
1
def current_directory_path
-
base_dir = "#{UPLOAD_ROOT}/#{params[:type]}"
-
Dir.mkdir(base_dir,0775) unless File.exists?(base_dir)
-
check_path("#{base_dir}#{params[:currentFolder]}")
-
end
-
-
##############################################################################
-
# Returns the upload url folder with the current folder
-
#
-
1
def upload_directory_path
-
url_root = env["RAILS_RELATIVE_URL_ROOT"].to_s
-
uploaded = url_root + "#{UPLOAD_FOLDER}/#{params[:Type]}"
-
"#{uploaded}#{params[:currentFolder]}"
-
end
-
-
##############################################################################
-
# Current uploaded file path
-
#
-
1
def uploaded_file_path
-
"#{upload_directory_path}#{@new_file.original_filename}"
-
end
-
-
##############################################################################
-
# check that the file is a tempfile object
-
#
-
1
def check_file(file)
-
log "CKEDITOR ---- CLASS OF UPLOAD OBJECT: #{file.class}"
-
unless [Tempfile, StringIO, ActionDispatch::Http::UploadedFile].include? file.class
-
@errorNumber = 403
-
throw Exception.new
-
end
-
file
-
end
-
-
1
def check_path(path)
-
exp_path = File.expand_path path
-
if exp_path !~ %r[^#{File.expand_path(UPLOAD_ROOT)}]
-
@errorNumber = 403
-
throw Exception.new
-
end
-
path
-
end
-
end
-
1
module CkeditorHelper
-
end
-
# Ckeditor
-
1
module Ckeditor
-
1
begin
-
1
CONFIG = YAML.load_file("#{::Rails.root.to_s}/config/ckeditor.yml")[::Rails.env]
-
rescue => e
-
CONFIG = nil
-
end
-
1
PLUGIN_NAME = 'easy-ckeditor'
-
1
PLUGIN_PATH = "#{::Rails.root.to_s}/vendor/plugins/#{PLUGIN_NAME}"
-
1
PLUGIN_PUBLIC_PATH = "#{::Rails.root.to_s}/public/files"
-
1
PLUGIN_PUBLIC_URI = "/files"
-
1
PLUGIN_CONTROLLER_PATH = "#{PLUGIN_PATH}/app/controllers"
-
1
PLUGIN_VIEWS_PATH = "#{PLUGIN_PATH}/app/views"
-
1
PLUGIN_HELPER_PATH = "#{PLUGIN_PATH}/app/helpers"
-
1
PLUGIN_FILE_MANAGER_URI = '/fm/filemanager'
-
1
PLUGIN_FILE_MANAGER_UPLOAD_URI = '/ckeditor/upload'
-
-
1
module Helper
-
1
def ckeditor_textarea(object, field, options = {})
-
12
var = instance_variable_get("@#{object}")
-
12
if var
-
8
value = var.send(field.to_sym)
-
8
value = value.nil? ? "" : value
-
else
-
4
value = ""
-
4
klass = "#{object}".camelcase.constantize
-
4
instance_variable_set("@#{object}", eval("#{klass}.new()"))
-
end
-
12
id = ckeditor_element_id(object, field)
-
-
12
cols = options[:cols].nil? ? "cols='20'" : "cols='"+options[:cols]+"'"
-
12
rows = options[:rows].nil? ? "rows='20'" : "rows='"+options[:rows]+"'"
-
-
12
width = options[:width].nil? ? '100%' : options[:width]
-
12
height = options[:height].nil? ? '100%' : options[:height]
-
-
12
classy = options[:class].nil? ? '' : "class='#{options[:class]}'"
-
-
12
toolbarSet = options[:toolbarSet].nil? ? 'Default' : options[:toolbarSet]
-
-
12
if options[:ajax]
-
inputs = "<input type='hidden' id='#{id}_hidden' name='#{object}[#{field}]'>\n" <<
-
"<textarea id='#{id}' #{cols} #{rows} name='#{id}'>#{value}</textarea>\n"
-
else
-
12
inputs = "<textarea id='#{id}' style='width:#{width};height:#{height}' #{cols} #{rows} #{classy} name='#{object}[#{field}]'>#{h value}</textarea>\n"
-
end
-
-
return inputs <<
-
javascript_tag("CKEDITOR.replace('#{object}[#{field}]', {
-
filebrowserBrowseUrl : '#{PLUGIN_FILE_MANAGER_URI}',
-
filebrowserUploadUrl : '#{PLUGIN_FILE_MANAGER_UPLOAD_URI}'
-
-
12
});\n")
-
end
-
-
1
def ckeditor_form_remote_tag(options = {})
-
editors = options[:editors]
-
before = ""
-
editors.keys.each do |e|
-
editors[e].each do |f|
-
before += ckeditor_before_js(e, f)
-
end
-
end
-
options[:before] = options[:before].nil? ? before : before + options[:before]
-
form_remote_tag(options)
-
end
-
-
1
def ckeditor_remote_form_for(object_name, *args, &proc)
-
options = args.last.is_a?(Hash) ? args.pop : {}
-
concat(ckeditor_form_remote_tag(options), proc.binding)
-
fields_for(object_name, *(args << options), &proc)
-
concat('</form>', proc.binding)
-
end
-
1
alias_method :ckeditor_form_remote_for, :ckeditor_remote_form_for
-
-
1
def ckeditor_element_id(object, field)
-
12
"#{object}__#{field}_editor"
-
end
-
-
1
def ckeditor_div_id(object, field)
-
id = eval("@#{object}.id")
-
"div-#{object}-#{id}-#{field}-editor"
-
end
-
-
1
def ckeditor_before_js(object, field)
-
id = ckeditor_element_id(object, field)
-
"var oEditor = CKEDITOR.instances.#{id}.getData();"
-
-
end
-
end
-
end
-
1
require 'fileutils'
-
-
1
module CkeditorFileUtils
-
1
CKEDITOR_INSTALL_DIRECTORY = File.join(::Rails.root.to_s, '/public/javascripts/ckeditor/')
-
1
PLUGIN_INSTALL_DIRECTORY = File.join(::Rails.root.to_s, '/vendor/plugins/easy-ckeditor/')
-
-
1
def CkeditorFileUtils.recursive_copy(options)
-
source = options[:source]
-
dest = options[:dest]
-
logging = options[:logging].nil? ? true : options[:logging]
-
-
Dir.foreach(source) do |entry|
-
next if entry =~ /^\./
-
if File.directory?(File.join(source, entry))
-
unless File.exist?(File.join(dest, entry))
-
if logging
-
puts "Creating directory #{entry}..."
-
end
-
FileUtils.mkdir File.join(dest, entry)#, :noop => true#, :verbose => true
-
end
-
recursive_copy(:source => File.join(source, entry),
-
:dest => File.join(dest, entry),
-
:logging => logging)
-
else
-
if logging
-
puts " Installing file #{entry}..."
-
end
-
FileUtils.cp File.join(source, entry), File.join(dest, entry)#, :noop => true#, :verbose => true
-
end
-
end
-
end
-
-
1
def CkeditorFileUtils.backup_existing
-
source = File.join(::Rails.root.to_s,'/public/javascripts/ckeditor')
-
dest = File.join(::Rails.root.to_s,'/public/javascripts/ckeditor_bck')
-
-
FileUtils.rm_r(dest) if File.exists? dest
-
FileUtils.mv source, dest
-
end
-
-
1
def CkeditorFileUtils.copy_configuration
-
1
return if Rails.env.production?
-
# need to copy over the code if it doesn't already exist
-
1
config_file = File.join(::Rails.root.to_s, '/vendor/plugins/easy-ckeditor/public/javascripts/ckcustom.js')
-
1
dest = File.join(::Rails.root.to_s, '/public/javascripts/ckcustom.js')
-
1
backup_config = File.join(::Rails.root.to_s, '/public/javascripts/ckeditor/config.bak')
-
1
config_symlink = File.join(::Rails.root.to_s, '/public/javascripts/ckeditor/config.js')
-
1
FileUtils.cp(config_file, dest) unless File.exist?(dest)
-
1
if File.exist?(config_symlink)
-
1
unless File.symlink?(config_symlink)
-
1
FileUtils.rm(backup_config) if File.exist?(backup_config)
-
1
FileUtils.mv(config_symlink,backup_config)
-
1
FileUtils.cp(dest, config_symlink)
-
end
-
else
-
FileUtils.cp(dest, config_symlink)
-
end
-
end
-
-
1
def CkeditorFileUtils.create_uploads_directory
-
uploads = File.join(::Rails.root.to_s, '/public/uploads')
-
FileUtils.mkdir(uploads) unless File.exist?(uploads)
-
end
-
-
1
def CkeditorFileUtils.install(log)
-
directory = File.join(::Rails.root.to_s, '/vendor/plugins/easy-ckeditor/')
-
source = File.join(directory,'/public/javascripts/ckeditor/')
-
FileUtils.mkdir(CKEDITOR_INSTALL_DIRECTORY)
-
# recursively copy all our files over
-
recursive_copy(:source => source, :dest => CKEDITOR_INSTALL_DIRECTORY, :logging => log)
-
# create the upload directories
-
create_uploads_directory
-
end
-
-
##################################################################
-
# remove the existing install (if any)
-
#
-
1
def CkeditorFileUtils.destroy
-
if File.exist?(CKEDITOR_INSTALL_DIRECTORY)
-
FileUtils.rm_r(CKEDITOR_INSTALL_DIRECTORY)
-
-
FileUtils.rm(File.join(::Rails.root.to_s, '/public/javascripts/ckcustom.js')) \
-
if File.exist? File.join(::Rails.root.to_s, '/public/javascripts/ckcustom.js')
-
end
-
end
-
-
1
def CkeditorFileUtils.rm_plugin
-
if File.exist?(PLUGIN_INSTALL_DIRECTORY)
-
FileUtils.rm_r(PLUGIN_INSTALL_DIRECTORY)
-
end
-
end
-
-
1
def CkeditorFileUtils.destroy_and_install
-
CkeditorFileUtils.destroy
-
# now install fresh
-
install(true)
-
# copy over the config file (unless it exists)
-
copy_configuration
-
end
-
-
1
def CkeditorFileUtils.check_and_install
-
# check to see if already installed, if not install
-
1
unless File.exist?(CKEDITOR_INSTALL_DIRECTORY)
-
install(false)
-
end
-
# copy over the config file (unless it exists)
-
1
copy_configuration
-
end
-
end
-
1
module CkeditorVersion
-
1
MAJOR = 0
-
1
MINOR = 9
-
1
RELEASE = 0
-
-
1
def self.current
-
"#{MAJOR}.#{MINOR}.#{RELEASE}"
-
end
-
end
-
=begin
-
filemanager_controller.rb
-
Copyright (C) 2008 Leon Li
-
-
You may redistribute it and/or modify it under the same
-
license terms as Ruby.
-
=end
-
-
1
require 'iconv'
-
1
require 'fileutils'
-
1
require 'filemanager/controller'
-
-
1
class Fm::FilemanagerController < ApplicationController
-
-
1
include Filemanager::Controller
-
-
1
layout false
-
1
before_filter :set_up
-
1
after_filter :tear_off
-
1
skip_before_filter :verify_authenticity_token
-
1
unloadable
-
end
-
1
class LivesearchSidebar < Sidebar
-
1
description "Adds livesearch to your Typo blog"
-
-
1
setting :title, 'Search'
-
end
-
1
module Localization
-
1
mattr_accessor :lang
-
-
1
@@l10s = { :default => {} }
-
1
@@lang = :default
-
-
1
def self._(string_to_localize, *args)
-
6716
translated = @@l10s[@@lang][string_to_localize]
-
6716
translated = string_to_localize if translated == "" or translated.nil?
-
-
6716
return translated.call(*args).to_s if translated.is_a? Proc
-
-
6716
if translated.is_a? Array
-
translated = if translated.size == 3
-
translated[args[0]==0 ? 0 : (args[0]>1 ? 2 : 1)]
-
else
-
translated[args[0]>1 ? 1 : 0]
-
end
-
end
-
6716
sprintf translated, *args
-
end
-
-
1
def self.__(string_to_localize, *args)
-
63
translated = @@l10s[@@lang][string_to_localize]
-
63
translated = string_to_localize if translated == "" or translated.nil?
-
-
63
return translated.call(*args).to_s if translated.is_a? Proc
-
-
63
if translated.is_a? Array
-
translated = if translated.size == 3
-
translated[args[0]==0 ? 0 : (args[0]>1 ? 2 : 1)]
-
else
-
translated[args[0]>1 ? 1 : 0]
-
end
-
end
-
63
translated
-
end
-
-
1
def self.define(lang = :default)
-
14
@@l10s[lang] ||= {}
-
14
yield @@l10s[lang]
-
end
-
-
1
def self.load
-
15
Dir.glob("#{::Rails.root.to_s}/lang/*.rb"){ |t| require t }
-
1
Dir.glob("#{::Rails.root.to_s}/lang/custom/*.rb"){ |t| require t }
-
end
-
-
# Generates a best-estimate l10n file from all views by
-
# collecting calls to _() -- note: use the generated file only
-
# as a start (this method is only guesstimating)
-
1
def self.generate_l10n_file
-
"Localization.define('en_US') do |l|\n" <<
-
Dir.glob("#{::Rails.root.to_s}/app/views/**/*.rhtml").collect do |f|
-
["# #{f}"] << File.read(f).scan(/<%.*[^\w]_\s*[\"\'](.*?)[\"\']/)
-
end.uniq.flatten.collect do |g|
-
g.starts_with?('#') ? "\n #{g}" : " l.store '#{g}', '#{g}'"
-
end.uniq.join("\n") << "\nend"
-
end
-
-
end
-
-
1
class Object
-
6717
def _(*args); Localization._(*args); end
-
64
def __(*args); Localization.__(*args); end
-
end
-
# coding: utf-8
-
1
class MetaSidebar < Sidebar
-
1
description "This widget just displays links to Typo main site, this blog's admin and RSS."
-
-
1
setting :title, 'Meta'
-
end
-
1
class PageSidebar < Sidebar
-
1
display_name "Page"
-
1
description "Show pages for this blog"
-
-
1
setting :maximum_pages, 10
-
-
1
def pages
-
@pages ||= Page.published.order(:title)
-
end
-
end
-
1
module PrototypeHelper
-
# Creates a button with an onclick event which calls a remote action
-
# via XMLHttpRequest
-
# The options for specifying the target with :url
-
# and defining callbacks is the same as link_to_remote.
-
1
def button_to_remote(name, options = {}, html_options = {})
-
19
button_to_function(name, remote_function(options), html_options)
-
end
-
-
# Returns a button input tag with the element name of +name+ and a value (i.e., display text) of +value+
-
# that will submit form using XMLHttpRequest in the background instead of a regular POST request that
-
# reloads the page.
-
#
-
# # Create a button that submits to the create action
-
# #
-
# # Generates: <input name="create_btn" onclick="new Ajax.Request('/testing/create',
-
# # {asynchronous:true, evalScripts:true, parameters:Form.serialize(this.form)});
-
# # return false;" type="button" value="Create" />
-
# <%= submit_to_remote 'create_btn', 'Create', :url => { :action => 'create' } %>
-
#
-
# # Submit to the remote action update and update the DIV succeed or fail based
-
# # on the success or failure of the request
-
# #
-
# # Generates: <input name="update_btn" onclick="new Ajax.Updater({success:'succeed',failure:'fail'},
-
# # '/testing/update', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this.form)});
-
# # return false;" type="button" value="Update" />
-
# <%= submit_to_remote 'update_btn', 'Update', :url => { :action => 'update' },
-
# :update => { :success => "succeed", :failure => "fail" }
-
#
-
# <tt>options</tt> argument is the same as in form_remote_tag.
-
1
def submit_to_remote(name, value, options = {})
-
19
options[:with] ||= 'Form.serialize(this.form)'
-
-
19
html_options = options.delete(:html) || {}
-
19
html_options[:name] = name
-
-
19
button_to_remote(value, options, html_options)
-
end
-
-
# Returns a link to a remote action defined by <tt>options[:url]</tt>
-
# (using the url_for format) that's called in the background using
-
# XMLHttpRequest. The result of that request can then be inserted into a
-
# DOM object whose id can be specified with <tt>options[:update]</tt>.
-
# Usually, the result would be a partial prepared by the controller with
-
# render :partial.
-
#
-
# Examples:
-
# # Generates: <a href="#" onclick="new Ajax.Updater('posts', '/blog/destroy/3', {asynchronous:true, evalScripts:true});
-
# # return false;">Delete this post</a>
-
# link_to_remote "Delete this post", :update => "posts",
-
# :url => { :action => "destroy", :id => post.id }
-
#
-
# # Generates: <a href="#" onclick="new Ajax.Updater('emails', '/mail/list_emails', {asynchronous:true, evalScripts:true});
-
# # return false;"><img alt="Refresh" src="/images/refresh.png?" /></a>
-
# link_to_remote(image_tag("refresh"), :update => "emails",
-
# :url => { :action => "list_emails" })
-
#
-
# You can override the generated HTML options by specifying a hash in
-
# <tt>options[:html]</tt>.
-
#
-
# link_to_remote "Delete this post", :update => "posts",
-
# :url => post_url(@post), :method => :delete,
-
# :html => { :class => "destructive" }
-
#
-
# You can also specify a hash for <tt>options[:update]</tt> to allow for
-
# easy redirection of output to an other DOM element if a server-side
-
# error occurs:
-
#
-
# Example:
-
# # Generates: <a href="#" onclick="new Ajax.Updater({success:'posts',failure:'error'}, '/blog/destroy/5',
-
# # {asynchronous:true, evalScripts:true}); return false;">Delete this post</a>
-
# link_to_remote "Delete this post",
-
# :url => { :action => "destroy", :id => post.id },
-
# :update => { :success => "posts", :failure => "error" }
-
#
-
# Optionally, you can use the <tt>options[:position]</tt> parameter to
-
# influence how the target DOM element is updated. It must be one of
-
# <tt>:before</tt>, <tt>:top</tt>, <tt>:bottom</tt>, or <tt>:after</tt>.
-
#
-
# The method used is by default POST. You can also specify GET or you
-
# can simulate PUT or DELETE over POST. All specified with <tt>options[:method]</tt>
-
#
-
# Example:
-
# # Generates: <a href="#" onclick="new Ajax.Request('/person/4', {asynchronous:true, evalScripts:true, method:'delete'});
-
# # return false;">Destroy</a>
-
# link_to_remote "Destroy", :url => person_url(:id => person), :method => :delete
-
#
-
# By default, these remote requests are processed asynchronous during
-
# which various JavaScript callbacks can be triggered (for progress
-
# indicators and the likes). All callbacks get access to the
-
# <tt>request</tt> object, which holds the underlying XMLHttpRequest.
-
#
-
# To access the server response, use <tt>request.responseText</tt>, to
-
# find out the HTTP status, use <tt>request.status</tt>.
-
#
-
# Example:
-
# # Generates: <a href="#" onclick="new Ajax.Request('/words/undo?n=33', {asynchronous:true, evalScripts:true,
-
# # onComplete:function(request){undoRequestCompleted(request)}}); return false;">hello</a>
-
# word = 'hello'
-
# link_to_remote word,
-
# :url => { :action => "undo", :n => word_counter },
-
# :complete => "undoRequestCompleted(request)"
-
#
-
# The callbacks that may be specified are (in order):
-
#
-
# <tt>:loading</tt>:: Called when the remote document is being
-
# loaded with data by the browser.
-
# <tt>:loaded</tt>:: Called when the browser has finished loading
-
# the remote document.
-
# <tt>:interactive</tt>:: Called when the user can interact with the
-
# remote document, even though it has not
-
# finished loading.
-
# <tt>:success</tt>:: Called when the XMLHttpRequest is completed,
-
# and the HTTP status code is in the 2XX range.
-
# <tt>:failure</tt>:: Called when the XMLHttpRequest is completed,
-
# and the HTTP status code is not in the 2XX
-
# range.
-
# <tt>:complete</tt>:: Called when the XMLHttpRequest is complete
-
# (fires after success/failure if they are
-
# present).
-
#
-
# You can further refine <tt>:success</tt> and <tt>:failure</tt> by
-
# adding additional callbacks for specific status codes.
-
#
-
# Example:
-
# # Generates: <a href="#" onclick="new Ajax.Request('/testing/action', {asynchronous:true, evalScripts:true,
-
# # on404:function(request){alert('Not found...? Wrong URL...?')},
-
# # onFailure:function(request){alert('HTTP Error ' + request.status + '!')}}); return false;">hello</a>
-
# link_to_remote word,
-
# :url => { :action => "action" },
-
# 404 => "alert('Not found...? Wrong URL...?')",
-
# :failure => "alert('HTTP Error ' + request.status + '!')"
-
#
-
# A status code callback overrides the success/failure handlers if
-
# present.
-
#
-
# If you for some reason or another need synchronous processing (that'll
-
# block the browser while the request is happening), you can specify
-
# <tt>options[:type] = :synchronous</tt>.
-
#
-
# You can customize further browser side call logic by passing in
-
# JavaScript code snippets via some optional parameters. In their order
-
# of use these are:
-
#
-
# <tt>:confirm</tt>:: Adds confirmation dialog.
-
# <tt>:condition</tt>:: Perform remote request conditionally
-
# by this expression. Use this to
-
# describe browser-side conditions when
-
# request should not be initiated.
-
# <tt>:before</tt>:: Called before request is initiated.
-
# <tt>:after</tt>:: Called immediately after request was
-
# initiated and before <tt>:loading</tt>.
-
# <tt>:submit</tt>:: Specifies the DOM element ID that's used
-
# as the parent of the form elements. By
-
# default this is the current form, but
-
# it could just as well be the ID of a
-
# table row or any other DOM element.
-
# <tt>:with</tt>:: A JavaScript expression specifying
-
# the parameters for the XMLHttpRequest.
-
# Any expressions should return a valid
-
# URL query string.
-
#
-
# Example:
-
#
-
# :with => "'name=' + $('name').value"
-
#
-
# You can generate a link that uses AJAX in the general case, while
-
# degrading gracefully to plain link behavior in the absence of
-
# JavaScript by setting <tt>html_options[:href]</tt> to an alternate URL.
-
# Note the extra curly braces around the <tt>options</tt> hash separate
-
# it as the second parameter from <tt>html_options</tt>, the third.
-
#
-
# Example:
-
# link_to_remote "Delete this post",
-
# { :update => "posts", :url => { :action => "destroy", :id => post.id } },
-
# :href => url_for(:action => "destroy", :id => post.id)
-
1
def link_to_remote(name, options = {}, html_options = nil)
-
50
link_to_function(name, remote_function(options), html_options || options.delete(:html))
-
end
-
-
# Returns a form tag that will submit using XMLHttpRequest in the
-
# background instead of the regular reloading POST arrangement. Even
-
# though it's using JavaScript to serialize the form elements, the form
-
# submission will work just like a regular submission as viewed by the
-
# receiving side (all elements available in <tt>params</tt>). The options for
-
# specifying the target with <tt>:url</tt> and defining callbacks is the same as
-
# +link_to_remote+.
-
#
-
# A "fall-through" target for browsers that doesn't do JavaScript can be
-
# specified with the <tt>:action</tt>/<tt>:method</tt> options on <tt>:html</tt>.
-
#
-
# Example:
-
# # Generates:
-
# # <form action="/some/place" method="post" onsubmit="new Ajax.Request('',
-
# # {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); return false;">
-
# form_remote_tag :html => { :action =>
-
# url_for(:controller => "some", :action => "place") }
-
#
-
# The Hash passed to the <tt>:html</tt> key is equivalent to the options (2nd)
-
# argument in the FormTagHelper.form_tag method.
-
#
-
# By default the fall-through action is the same as the one specified in
-
# the <tt>:url</tt> (and the default method is <tt>:post</tt>).
-
#
-
# form_remote_tag also takes a block, like form_tag:
-
# # Generates:
-
# # <form action="/" method="post" onsubmit="new Ajax.Request('/',
-
# # {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)});
-
# # return false;"> <div><input name="commit" type="submit" value="Save" /></div>
-
# # </form>
-
# <% form_remote_tag :url => '/posts' do -%>
-
# <div><%= submit_tag 'Save' %></div>
-
# <% end -%>
-
1
def form_remote_tag(options = {}, &block)
-
40
options[:form] = true
-
-
40
options[:html] ||= {}
-
40
options[:html][:onsubmit] =
-
40
(options[:html][:onsubmit] ? options[:html][:onsubmit] + "; " : "") +
-
"#{remote_function(options)}; return false;"
-
-
40
form_tag(options[:html].delete(:action) || url_for(options[:url]), options[:html], &block)
-
end
-
-
# Creates a form that will submit using XMLHttpRequest in the background
-
# instead of the regular reloading POST arrangement and a scope around a
-
# specific resource that is used as a base for questioning about
-
# values for the fields.
-
#
-
# === Resource
-
#
-
# Example:
-
# <% remote_form_for(@post) do |f| %>
-
# ...
-
# <% end %>
-
#
-
# This will expand to be the same as:
-
#
-
# <% remote_form_for :post, @post, :url => post_path(@post), :html => { :method => :put, :class => "edit_post", :id => "edit_post_45" } do |f| %>
-
# ...
-
# <% end %>
-
#
-
# === Nested Resource
-
#
-
# Example:
-
# <% remote_form_for([@post, @comment]) do |f| %>
-
# ...
-
# <% end %>
-
#
-
# This will expand to be the same as:
-
#
-
# <% remote_form_for :comment, @comment, :url => post_comment_path(@post, @comment), :html => { :method => :put, :class => "edit_comment", :id => "edit_comment_45" } do |f| %>
-
# ...
-
# <% end %>
-
#
-
# If you don't need to attach a form to a resource, then check out form_remote_tag.
-
#
-
# See FormHelper#form_for for additional semantics.
-
1
def remote_form_for(record_or_name_or_array, *args, &proc)
-
4
options = args.extract_options!
-
-
4
case record_or_name_or_array
-
when String, Symbol
-
4
object_name = record_or_name_or_array
-
when Array
-
object = record_or_name_or_array.last
-
object_name = ActiveModel::Naming.singular(object)
-
apply_form_for_options!(record_or_name_or_array, options)
-
args.unshift object
-
else
-
object = record_or_name_or_array
-
object_name = ActiveModel::Naming.singular(record_or_name_or_array)
-
apply_form_for_options!(object, options)
-
args.unshift object
-
end
-
-
4
form_remote_tag options do
-
4
fields_for object_name, *(args << options), &proc
-
end
-
end
-
1
alias_method :form_remote_for, :remote_form_for
-
-
# Returns '<tt>eval(request.responseText)</tt>' which is the JavaScript function
-
# that +form_remote_tag+ can call in <tt>:complete</tt> to evaluate a multiple
-
# update return document using +update_element_function+ calls.
-
1
def evaluate_remote_response
-
"eval(request.responseText)"
-
end
-
-
# Observes the field with the DOM ID specified by +field_id+ and calls a
-
# callback when its contents have changed. The default callback is an
-
# Ajax call. By default the value of the observed field is sent as a
-
# parameter with the Ajax call.
-
#
-
# Example:
-
# # Generates: new Form.Element.Observer('suggest', 0.25, function(element, value) {new Ajax.Updater('suggest',
-
# # '/testing/find_suggestion', {asynchronous:true, evalScripts:true, parameters:'q=' + value})})
-
# <%= observe_field :suggest, :url => { :action => :find_suggestion },
-
# :frequency => 0.25,
-
# :update => :suggest,
-
# :with => 'q'
-
# %>
-
#
-
# Required +options+ are either of:
-
# <tt>:url</tt>:: +url_for+-style options for the action to call
-
# when the field has changed.
-
# <tt>:function</tt>:: Instead of making a remote call to a URL, you
-
# can specify javascript code to be called instead.
-
# Note that the value of this option is used as the
-
# *body* of the javascript function, a function definition
-
# with parameters named element and value will be generated for you
-
# for example:
-
# observe_field("glass", :frequency => 1, :function => "alert('Element changed')")
-
# will generate:
-
# new Form.Element.Observer('glass', 1, function(element, value) {alert('Element changed')})
-
# The element parameter is the DOM element being observed, and the value is its value at the
-
# time the observer is triggered.
-
#
-
# Additional options are:
-
# <tt>:frequency</tt>:: The frequency (in seconds) at which changes to
-
# this field will be detected. Not setting this
-
# option at all or to a value equal to or less than
-
# zero will use event based observation instead of
-
# time based observation.
-
# <tt>:update</tt>:: Specifies the DOM ID of the element whose
-
# innerHTML should be updated with the
-
# XMLHttpRequest response text.
-
# <tt>:with</tt>:: A JavaScript expression specifying the parameters
-
# for the XMLHttpRequest. The default is to send the
-
# key and value of the observed field. Any custom
-
# expressions should return a valid URL query string.
-
# The value of the field is stored in the JavaScript
-
# variable +value+.
-
#
-
# Examples
-
#
-
# :with => "'my_custom_key=' + value"
-
# :with => "'person[name]=' + prompt('New name')"
-
# :with => "Form.Element.serialize('other-field')"
-
#
-
# Finally
-
# :with => 'name'
-
# is shorthand for
-
# :with => "'name=' + value"
-
# This essentially just changes the key of the parameter.
-
#
-
# Additionally, you may specify any of the options documented in the
-
# <em>Common options</em> section at the top of this document.
-
#
-
# Example:
-
#
-
# # Sends params: {:title => 'Title of the book'} when the book_title input
-
# # field is changed.
-
# observe_field 'book_title',
-
# :url => 'http://example.com/books/edit/1',
-
# :with => 'title'
-
#
-
#
-
1
def observe_field(field_id, options = {})
-
if options[:frequency] && options[:frequency] > 0
-
build_observer('Form.Element.Observer', field_id, options)
-
else
-
build_observer('Form.Element.EventObserver', field_id, options)
-
end
-
end
-
-
# Observes the form with the DOM ID specified by +form_id+ and calls a
-
# callback when its contents have changed. The default callback is an
-
# Ajax call. By default all fields of the observed field are sent as
-
# parameters with the Ajax call.
-
#
-
# The +options+ for +observe_form+ are the same as the options for
-
# +observe_field+. The JavaScript variable +value+ available to the
-
# <tt>:with</tt> option is set to the serialized form by default.
-
1
def observe_form(form_id, options = {})
-
if options[:frequency]
-
build_observer('Form.Observer', form_id, options)
-
else
-
build_observer('Form.EventObserver', form_id, options)
-
end
-
end
-
-
# Periodically calls the specified url (<tt>options[:url]</tt>) every
-
# <tt>options[:frequency]</tt> seconds (default is 10). Usually used to
-
# update a specified div (<tt>options[:update]</tt>) with the results
-
# of the remote call. The options for specifying the target with <tt>:url</tt>
-
# and defining callbacks is the same as link_to_remote.
-
# Examples:
-
# # Call get_averages and put its results in 'avg' every 10 seconds
-
# # Generates:
-
# # new PeriodicalExecuter(function() {new Ajax.Updater('avg', '/grades/get_averages',
-
# # {asynchronous:true, evalScripts:true})}, 10)
-
# periodically_call_remote(:url => { :action => 'get_averages' }, :update => 'avg')
-
#
-
# # Call invoice every 10 seconds with the id of the customer
-
# # If it succeeds, update the invoice DIV; if it fails, update the error DIV
-
# # Generates:
-
# # new PeriodicalExecuter(function() {new Ajax.Updater({success:'invoice',failure:'error'},
-
# # '/testing/invoice/16', {asynchronous:true, evalScripts:true})}, 10)
-
# periodically_call_remote(:url => { :action => 'invoice', :id => customer.id },
-
# :update => { :success => "invoice", :failure => "error" }
-
#
-
# # Call update every 20 seconds and update the new_block DIV
-
# # Generates:
-
# # new PeriodicalExecuter(function() {new Ajax.Updater('news_block', 'update', {asynchronous:true, evalScripts:true})}, 20)
-
# periodically_call_remote(:url => 'update', :frequency => '20', :update => 'news_block')
-
#
-
1
def periodically_call_remote(options = {})
-
frequency = options[:frequency] || 10 # every ten seconds by default
-
code = "new PeriodicalExecuter(function() {#{remote_function(options)}}, #{frequency})"
-
javascript_tag(code)
-
end
-
-
1
protected
-
1
def build_observer(klass, name, options = {})
-
if options[:with] && (options[:with] !~ /[\{=(.]/)
-
options[:with] = "'#{options[:with]}=' + encodeURIComponent(value)"
-
else
-
options[:with] ||= 'value' unless options[:function]
-
end
-
-
callback = options[:function] || remote_function(options)
-
javascript = "new #{klass}('#{name}', "
-
javascript << "#{options[:frequency]}, " if options[:frequency]
-
javascript << "function(element, value) {"
-
javascript << "#{callback}}"
-
javascript << ")"
-
javascript_tag(javascript)
-
end
-
end
-
-
1
ActionController::Base.helper PrototypeHelper
-
1
class SearchSidebar < Sidebar
-
-
1
description "Adds basic search sidebar in your Typo blog"
-
-
1
setting :title, 'Search'
-
end
-
# coding: utf-8
-
1
class StaticSidebar < Sidebar
-
1
DEFAULT_TEXT = %q{
-
<ul>
-
<li><a href="http://www.typosphere.org" title="Typo">Typosphere</a></li>
-
<li><a href="http://typogarden.org">Typogarden</a></li>
-
<li><a href="http://t37.net" title="Ergonomie Web">Frédéric</a></li>
-
<li><a href="http://www.matijs.net/" title="Matijs">Matijs</a></li>
-
<li><a href="http://elsif.fr" title="Yannick">Yannick</a></li>
-
<li><a href="http://blog.shingara.fr" title="Cyril">Cyril</a></li>
-
<li><a href="http://blog.ookook.fr" title="Thomas">Thomas</a></li>
-
<li><a href="/admin">Admin</a></li>
-
</ul>
-
}
-
1
description "Static content, like links to other sites, advertisements, or blog meta-information"
-
-
1
setting :title, 'Links'
-
1
setting :body, DEFAULT_TEXT, :input_type => :text_area
-
-
end
-
1
class TagSidebar < Sidebar
-
1
display_name "Tags"
-
1
description "Show most popular tags for this blog"
-
-
1
setting :maximum_tags, 20
-
-
1
def tags
-
@tags ||= Tag.find_all_with_article_counters(maximum_tags.to_i).sort_by {|t| t.name}
-
end
-
-
1
def sizes
-
return @sizes if @sizes
-
total = @tags.inject(0) {|total, tag| total + tag.article_counter }
-
average = total.to_f / @tags.size.to_f
-
@sizes = @tags.inject({}) do |h,tag|
-
size = tag.article_counter.to_f / average
-
h.merge tag => [[2.0/3.0, size].max, 2].min * 100
-
end
-
end
-
-
1
def font_multiplier
-
80
-
end
-
end
-
# TypoAvatarGravatar
-
-
1
module TypoPlugins
-
-
1
class Gravatar < AvatarPlugin
-
1
@description = 'Provide user avatar image throught the http://gravatar.com service.'
-
-
1
class << self
-
-
1
def get_avatar(options={})
-
email = options.delete(:email) || ''
-
gravatar_tag(email, options)
-
end
-
-
1
def name
-
1
'Gravatar'
-
end
-
-
1
private
-
-
# Generate the image tag for a commenters gravatar based on their email address
-
# Valid options are described at http://www.gravatar.com/implement.php
-
1
def gravatar_tag(email, options={})
-
options[:gravatar_id] = Digest::MD5.hexdigest(email.strip)
-
options[:default] = CGI::escape(options[:default]) if options.include?(:default)
-
options[:size] ||= 48
-
-
url = "http://www.gravatar.com/avatar.php?" << options.map { |key,value| "#{key}=#{value}" }.sort.join("&")
-
"<img src=\"#{url}\" class=\"avatar gravatar\" />"
-
end
-
end
-
end
-
-
end
-
# AccessControl, permit to manage, backend, and frontend access.
-
# It's based on the LipsiaSoft Admin.
-
# You can define on the fly, roles access, for example:
-
#
-
# Typo::AccessControl.map :require => [ :administrator, :manager, :customer ] do |map|
-
# # Shared Permission
-
# map.permission "backend/base"
-
# # Module Permission
-
# map.project_module :accounts, "backend/accounts" do |project|
-
# project.menu :list, { :action => :index }, :class => "icon-no-group"
-
# project.menu :new, { :action => :new }, :class => "icon-new"
-
# end
-
#
-
# end
-
#
-
# Typo::AccessControl.map :require => :customer do |map|
-
# # Shared Permission
-
# map.permission "frontend/cart"
-
# # Module Permission
-
# map.project_module :store, "frontend/store" do |map|
-
# map.menu :add, { :cart => :add }, :class => "icon-no-group"
-
# map.menu :list, { :cart => :list }, :class => "icon-no-group"
-
# end
-
# end
-
#
-
# So the when you do:
-
#
-
# Typo::AccessControl.roles
-
# # => [:administrator, :manager, :customer]
-
#
-
# Typo::AccessControl.project_modules(:customer)
-
# # => [#<Typo::AccessControl::ProjectModule:0x254a9c8 @controller="backend/accounts", @name=:accounts, @menus=[#<Typo::AccessControl::Menu:0x254a928 @url={:action=>:index}, @name=:list, @options={:class=>"icon-no-group"}>, #<Typo::AccessControl::Menu:0x254a8d8 @url={:action=>:new}, @name=:new, @options={:class=>"icon-new"}>]>, #<Typo::AccessControl::ProjectModule:0x254a84c @controller="frontend/store", @name=:store, @menus=[#<Typo::AccessControl::Menu:0x254a7d4 @url={:cart=>:add}, @name=:add, @options={}>, #<Typo::AccessControl::Menu:0x254a798 @url={:cart=>:list}, @name=:list, @options={}>]>]
-
#
-
# Typo::AccessControl.allowed_controllers(:customer)
-
# => ["backend/base", "backend/accounts", "frontend/cart", "frontend/store"]
-
#
-
# If in your controller there is *login_required* our Authenticated System verify the allowed_controllers for the account role (Ex: :customer),
-
# if not satisfed you will be redirected to login page.
-
#
-
# An account have two columns, role, that is a string, and project_modules, that is an array (with serialize)
-
#
-
# For example, whe can decide that an Account with role :customers can see only, the module project :store.
-
1
module AccessControl
-
1
class << self
-
1
def map(role)
-
1
@mappers ||= []
-
1
@roles ||= []
-
1
mapper = Mapper.new(role)
-
1
yield mapper
-
1
@mappers << mapper
-
1
@roles.concat(mapper.roles)
-
end
-
-
1
def project_modules(role)
-
5186
project_modules = []
-
10366
mappers(role).each { |m| project_modules.concat(m.project_modules) }
-
5186
return project_modules.uniq.compact
-
end
-
-
1
def project_module(role, name)
-
27134
project_modules(role).find { |p| p.name == name }
-
end
-
-
1
def roles
-
1
return @roles.uniq.compact
-
end
-
-
1
def human_roles
-
return roles.collect(&:to_s).collect(&:humanize)
-
end
-
-
1
def allowed_controllers(role, project_modules)
-
233
controllers = []
-
463
mappers(role).each { |m| controllers.concat(m.controllers) }
-
2739
project_modules.each { |m| controllers.concat(project_module(role, m).controllers) if project_module(role, m) }
-
233
return controllers.uniq.compact
-
end
-
-
1
def search_plugins_directory
-
1
plugins_root = File.join(::Rails.root.to_s, 'vendor', 'plugins')
-
1
Dir.glob("#{plugins_root}/typo_plugin_*").select do |file|
-
File.readable?(File.join(plugin_admin_controller_path(file), file.split("#{plugins_root}/typo_plugin_").second + "_controller.rb"))
-
end.compact
-
end
-
-
1
def get_plugin_litteral_name(plugin)
-
get_plugin_controller_name(plugin).tr('_', ' ').capitalize
-
end
-
-
1
def get_plugin_controller_name(plugin)
-
plugin.split("#{plugin_root}/typo_plugin_").second
-
end
-
-
1
private
-
1
def mappers(role)
-
10838
@mappers.select { |m| m.roles.include?(role.to_s.downcase.to_sym) }
-
end
-
-
1
def plugin_root
-
File.join(::Rails.root.to_s, 'vendor', 'plugins')
-
end
-
-
1
def plugin_admin_controller_path(plugin)
-
File.join("#{plugin}", "lib", "app", "controllers", "admin")
-
end
-
end
-
-
1
class Mapper
-
1
attr_reader :project_modules, :roles
-
-
1
def initialize(hash)
-
4
@roles = hash[:require].is_a?(Array) ? hash[:require].collect { |r| r.to_s.downcase.to_sym } : [hash[:require].to_s.downcase.to_sym]
-
1
@project_modules = []
-
1
@controllers = []
-
end
-
-
1
def project_module(name, controller = nil)
-
6
project_module = ProjectModule.new(name, controller)
-
6
yield project_module
-
6
@project_modules << project_module
-
end
-
-
1
def permission(controller)
-
7
@controllers << controller
-
end
-
-
1
def controllers
-
230
return @controllers.uniq.compact
-
end
-
end
-
-
1
class ProjectModule
-
1
attr_reader :name, :menus, :submenus, :controllers
-
-
1
def initialize(name, controller=nil)
-
6
@name = name
-
6
@controllers, @menus, @submenus = [], [], []
-
6
@controllers << controller
-
end
-
-
1
def menu(name, url, options={})
-
7
if url.is_a?(Hash)
-
7
url[:controller].nil? ? url[:controller] = @controllers.first : @controllers << url[:controller]
-
end
-
7
@menus << Menu.new(name, url, options)
-
end
-
-
1
def submenu(name, url, options={})
-
20
if url.is_a?(Hash)
-
20
url[:controller].nil? ? url[:controller] = @controllers.first : @controllers << url[:controller]
-
end
-
20
@submenus << Menu.new(name, url, options)
-
end
-
-
1
def human_name
-
return @name.to_s.humanize
-
end
-
-
1
def uid
-
@name.to_s.downcase.gsub(/[^a-z0-9]+/, '').gsub(/-+$/, '').gsub(/^-+$/, '')
-
end
-
end
-
-
1
class Menu
-
1
attr_reader :name, :options, :url
-
-
1
def initialize(name, url, options)
-
27
@name = name
-
27
@options = options
-
27
@url = url
-
end
-
-
1
def human_name
-
return @name.to_s.humanize
-
end
-
-
1
def uid
-
@name.to_s.downcase.gsub(/[^a-z0-9]+/, '').gsub(/-+$/, '').gsub(/^-+$/, '')
-
end
-
end
-
-
end
-
1
module LoginSystem
-
1
protected
-
-
1
def logged_in?
-
248
current_user != :false
-
end
-
-
1
def current_user
-
1844
@current_user ||= (login_from_session || login_from_basic_auth || login_from_cookie || :false)
-
end
-
-
1
def current_user=(new_user)
-
264
session[:user] = (new_user.nil? || new_user.is_a?(Symbol)) ? nil : new_user.id
-
264
@current_user = new_user
-
end
-
-
# If the current actions are in our access rule will be verifyed
-
1
def allowed?
-
233
return AccessControl.allowed_controllers(current_user.profile.label, current_user.profile.modules).include?(params[:controller])
-
end
-
-
1
def authorized?
-
234
logged_in? && allowed?
-
end
-
-
1
def login_required
-
234
authorized? || access_denied
-
end
-
-
1
def access_denied
-
4
respond_to do |accepts|
-
4
accepts.html do
-
#store_location
-
4
session[:return_to] = request.fullpath
-
4
if User.find(:first)
-
4
redirect_to :controller => "/accounts", :action => "login"
-
else
-
redirect_to :controller => "/accounts", :action => "signup"
-
end
-
end
-
4
accepts.xml do
-
headers["Status"] = "Unauthorized"
-
headers["WWW-Authenticate"] = %(Basic realm="Web Password")
-
render :text => "Could't authenticate you", :status => '401 Unauthorized'
-
end
-
end
-
4
false
-
end
-
-
1
def store_location
-
session[:return_to] = request.fullpath
-
end
-
-
1
def redirect_back_or_default(default)
-
7
redirect_to(session[:return_to] || default)
-
7
session[:return_to] = nil
-
end
-
-
1
def self.included(base)
-
2
base.send :helper_method, :current_user, :logged_in?
-
end
-
-
1
def login_from_session
-
258
self.current_user = User.find_by_id(session[:user]) if session[:user]
-
end
-
-
1
def login_from_basic_auth
-
19
email, passwd = get_auth_data
-
19
self.current_user = User.authenticate(email, passwd) if email && passwd
-
end
-
-
# Called from #current_user. Finaly, attempt to login by an expiring token in the cookie.
-
1
def login_from_cookie
-
19
user = cookies[:auth_token] && User.find_by_remember_token(cookies[:auth_token])
-
19
if user && user.remember_token?
-
user.remember_me
-
cookies[:auth_token] = { :value => user.remember_token, :expires => user.remember_token_expires_at }
-
self.current_user = user
-
end
-
end
-
-
1
private
-
1
@@http_auth_headers = %w(X-HTTP_AUTHORIZATION HTTP_AUTHORIZATION Authorization)
-
# gets BASIC auth info
-
1
def get_auth_data
-
76
auth_key = @@http_auth_headers.detect { |h| request.env.has_key?(h) }
-
19
auth_data = request.env[auth_key].to_s.split unless auth_key.blank?
-
19
return auth_data && auth_data[0] == 'Basic' ? Base64.decode64(auth_data[1]).split(':')[0..1] : [nil, nil]
-
end
-
end
-
1
require 'coderay'
-
1
require 'htmlentities'
-
-
1
class Typo
-
1
class Textfilter
-
1
class Code < TextFilterPlugin::MacroPre
-
1
plugin_display_name "Code"
-
1
plugin_description "Apply coderay highlighting to a code block"
-
-
1
DEFAULT_OPTIONS = {:css => :class,
-
:wrap => :span,
-
:line_numbers => nil,
-
:tab_width => 2,
-
:bold_every => 5,
-
:hint => false,
-
:line_number_start => 1}
-
-
1
def self.help_text
-
%{
-
You can use `<typo:code>` to include syntax-highlighted code blocks. Example:
-
-
<typo:code lang="ruby">
-
class Foo
-
def bar
-
"abcde"
-
end
-
end
-
</typo:code>
-
-
This uses the Ruby [Syntax](http://coderay.rubychan.de) module. Options:
-
-
* **lang**. Sets the programming language. Currently supported languages are
-
*C, C++ (*), CSS, Delphi, diff, Groovy (*), HTML, Java, JavaScript, JSON,
-
PHP (*), Python (*), RHTML, Ruby, Scheme, SQL (*), XHTML, XML, YAML.
-
* Only available in CodeRay >= 0.9.1
-
* **linenumber**. Turns on line numbering. Use `linenumber="true"` to enable.
-
* **title**. Adds a title block to the top of the code block.
-
1
}
-
end
-
-
1
def self.macrofilter(blog, content, attrib, params, text="")
-
7
lang = attrib['lang']
-
7
title = attrib['title']
-
7
if attrib['linenumber'] == "true"
-
options = DEFAULT_OPTIONS.merge(:line_numbers => :table,
-
:wrap => :div)
-
else
-
7
options = DEFAULT_OPTIONS
-
end
-
-
7
text = text.to_s.gsub(/\r/,'').gsub(/\A\n/,'').chomp
-
-
7
begin
-
7
text = CodeRay.scan(text, lang.downcase.to_sym).span(options)
-
rescue
-
1
text = HTMLEntities.new("xhtml1").encode(text)
-
end
-
7
text = "<notextile>#{text}</notextile>"
-
-
7
if(title)
-
titlecode="<div class=\"codetitle\">#{title}</div>"
-
else
-
7
titlecode=''
-
end
-
-
7
"<div class=\"CodeRay\"><pre>#{titlecode}#{text}</pre></div>"
-
end
-
end
-
end
-
end
-
1
require 'net/http'
-
-
1
class Typo
-
1
class Textfilter
-
1
class Flickr < TextFilterPlugin::MacroPost
-
1
plugin_display_name "Flickr"
-
1
plugin_description "Automatically generate image tags for Flickr images"
-
-
1
def self.help_text
-
%{
-
You can use `<typo:flickr>` to display images from [Flickr](http://flickr.com). Example:
-
-
<typo:flickr img="31367273" size="small"/>
-
-
will produce an `<img>` tag showing image number 31367273 from Flickr. This image will be linked to
-
the Flickr page for this image, so you can zoom in and see larger versions. It will also have a
-
comment block attached if a description has been attached to the picture in Flickr.
-
-
This macro takes a number of parameters:
-
-
* **img** The Flickr image ID of the picture that you wish to use. This shows up in the URL whenever
-
you're viewing a picture in Flickr; for example, the image ID for <http://flickr.com/photos/scottlaird/31367273>
-
is 31367273.
-
* **size** The image size that you'd like to display. Options are:
-
* square (75x75)
-
* thumbnail (maximum size 100 pixels)
-
* small (maximum size 240 pixels)
-
* medium (maximum size 500 pixels)
-
* large (maximum size 1024 pixels)
-
* original
-
* **style** This is passed through to the enclosing `<div>` that this macro generates. To float the flickr
-
image on the right, use `style="float:right"`.
-
* **caption** The caption displayed below the image. By default, this is Flickr's description of the image.
-
to disable, use `caption=""`.
-
* **title** The tooltip title associated with the image. Defaults to Flickr's image title.
-
* **alt** The alt text associated with the image. By default, this is the same as the title.
-
}
-
end
-
-
1
def self.macrofilter(blog,content,attrib,params,text="")
-
6
img = attrib['img']
-
6
size = attrib['size'] || "square"
-
6
style = attrib['style']
-
6
caption = attrib['caption']
-
6
title = attrib['title']
-
6
alt = attrib['alt']
-
-
6
begin
-
6
FlickRaw.api_key = FLICKR_KEY
-
6
flickrimage = flickr.photos.getInfo(:photo_id => img)
-
5
sizes = flickr.photos.getSizes(:photo_id => img)
-
-
10
details = sizes.find {|s| s['label'].downcase == size.downcase } || sizes.first
-
5
width = details['width']
-
5
height = details['height']
-
5
imageurl = details['source']
-
10
imagelink = flickrimage.urls.find {|u| u.type == "photopage"}.to_s
-
-
5
caption ||= sanitize(CGI.unescapeHTML(flickrimage.description)) unless flickrimage.description.blank?
-
5
title ||= flickrimage.title
-
5
alt ||= title
-
-
5
if(caption.blank?)
-
1
captioncode=""
-
else
-
4
captioncode = "<p class=\"caption\" style=\"width:#{width}px\">#{caption}</p>"
-
end
-
-
5
"<div style=\"#{style}\" class=\"flickrplugin\"><a href=\"#{imagelink}\"><img src=\"#{imageurl}\" width=\"#{width}\" height=\"#{height}\" alt=\"#{alt}\" title=\"#{title}\"/></a>#{captioncode}</div>"
-
-
1
rescue Exception => e
-
1
logger.info e.message
-
1
%{<div class='broken_flickr_link'>`#{img}' could not be displayed because: <br />#{CGI.escapeHTML(e.message)}</div>}
-
end
-
end
-
end
-
end
-
end
-
1
class Typo
-
1
class Textfilter
-
1
class Htmlfilter < TextFilterPlugin
-
1
plugin_display_name "HTML Filter"
-
1
plugin_description 'Strip HTML tags'
-
-
1
def self.filtertext(blog,content,text,params)
-
text.to_s.gsub( "<", "<" ).gsub( ">", ">" )
-
end
-
end
-
end
-
end
-
1
require 'net/http'
-
-
1
class Typo
-
1
class Textfilter
-
1
class Lightbox < TextFilterPlugin::MacroPost
-
1
plugin_display_name "Lightbox"
-
1
plugin_description "Automatically generate tags for images displayed in a lightbox"
-
-
1
def self.help_text
-
%{
-
You can use `<typo:lightbox>` to display images from [Flickr](http://flickr.com)
-
or a provided URL which, when clicked, will be shown in a lightbox using Lokesh Dhakar's
-
[Lightbox](http://www.huddletogether.com/projects/lightbox/) Javascript
-
-
Example:
-
-
<typo:lightbox img="31367273" thumbsize="thumbnail" displaysize="original"/>
-
<typo:lightbox src="/files/myimage.png" thumbsrc="/files/myimage-thumb.png"/>
-
-
The first will produce an `<img>` tag showing image number 31367273 from Flickr using the thumbnail image size. The image will be linked to the original image file from Flickr. When the link is clicked, the larger picture will be overlaid
-
on top of the existing page instead of taking you over to the Flickr site.
-
The second will do the same but use the `src` URL as the large picture and the `thumbsrc` URL as the thumbnail image.
-
To understand what this looks like, have a peek at Lokesh Dhakar's
-
[examples](http://www.huddletogether.com/projects/lightbox/).
-
It will also have a
-
comment block attached if a description has been attached to the picture in Flickr or the caption attribute is used.
-
-
For theme writers, the link is enclosed in a div tag with a "lightboxplugin"
-
class. Because this filter requires javascript and css include files, it
-
will only work with themes using the `<%= page_header %>` convenience function
-
in their layouts. As of this writing only Azure does this.
-
-
This macro takes a number of parameters:
-
-
Flickr attributes:
-
-
* **img** The Flickr image ID of the picture that you wish to use. This shows up in the URL whenever
-
you're viewing a picture in Flickr; for example, the image ID for <http://flickr.com/photos/scottlaird/31367273>
-
is 31367273.
-
* **thumbsize** The image size that you'd like to display. Typically you would use square, thumbnail or small. Options are:
-
* square (75x75)
-
* thumbnail (maximum size 100 pixels)
-
* small (maximum size 240 pixels)
-
* medium (maximum size 500 pixels)
-
* large (maximum size 1024 pixels)
-
* original
-
* **displaysize** The image size for the lightbox overlay shown when the user clicks the thumbnail. Options are the same as for thumbsize, but typically you would use medium or large. If your image files are quite large on Flickr you probably want to avoid using original.
-
-
Direct URL attributes:
-
-
* **src** The URL to the picture you wish to use.
-
* **thumbsrc** The URL to the thumbnail you would like to use. If this is not provided, the original picture will be used with the width and height properties of the `<img>` tag set to 100x100.
-
-
Common attributes:
-
-
* **style** This is passed through to the enclosing `<div>` that this macro generates. To float the
-
image on the right, use `style="float:right"`.
-
* **caption** The caption displayed below the image. By default, this is Flickr's description of the image.
-
to disable, use `caption=""`.
-
* **title** The tooltip title associated with the image. Defaults to Flickr's image title.
-
* **alt** The alt text associated with the image. By default, this is the same as the title.
-
* **set** Add image to a set
-
* **class** adds an existing CSS class
-
}
-
end
-
-
1
def self.macrofilter(blog,content,attrib,params,text="")
-
4
style = attrib['style']
-
4
caption = attrib['caption']
-
4
title = attrib['title']
-
4
alt = attrib['alt']
-
4
theclass = attrib['class']
-
4
set = attrib['set']
-
4
thumburl = ''
-
4
displayurl = ''
-
-
4
img = attrib['img']
-
4
if img
-
4
thumbsize = attrib['thumbsize'] || "square"
-
4
displaysize = attrib['displaysize'] || "original"
-
-
4
FlickRaw.api_key = FLICKR_KEY
-
4
flickrimage = flickr.photos.getInfo(:photo_id => img)
-
4
sizes = flickr.photos.getSizes(:photo_id => img)
-
-
9
thumbdetails = sizes.find {|s| s['label'].downcase == thumbsize.downcase } || sizes.first
-
26
displaydetails = sizes.find {|s| s['label'].downcase == displaysize.downcase } || sizes.first
-
-
4
width = thumbdetails['width']
-
4
height = thumbdetails['height']
-
4
thumburl = thumbdetails['source']
-
-
4
displayurl = displaydetails['source']
-
-
4
caption ||= flickrimage.description
-
4
title ||= flickrimage.title
-
4
alt ||= title
-
else
-
thumburl = attrib['thumbsrc'] unless attrib['thumbsrc'].nil?
-
displayurl = attrib['src'] unless attrib['src'].nil?
-
-
if thumburl.empty?
-
thumburl = displayurl
-
width = 100
-
height = 100
-
else
-
width = height = nil
-
end
-
end
-
-
4
rel = (set.blank?) ? "lightbox" : "lightbox[#{set}]"
-
-
4
if(caption.blank?)
-
1
captioncode=""
-
else
-
3
captioncode = "<p class=\"caption\" style=\"width:#{width}px\">#{caption}</p>"
-
end
-
-
4
set_whiteboard blog, content unless content.nil?
-
4
%{<a href="#{displayurl}" rel="#{rel}" title="#{title}"><img src="#{thumburl}" #{%{class="#{theclass}" } unless theclass.nil?}#{%{width="#{width}" } unless width.nil?}#{%{height="#{height}" } unless height.nil?}alt="#{alt}" title="#{title}"/></a>#{captioncode}}
-
end
-
-
1
def self.set_whiteboard(blog, content)
-
4
content.whiteboard['page_header_lightbox'] = <<-HTML
-
<link href="#{blog.base_url}/stylesheets/lightbox.css" media="all" rel="Stylesheet" type="text/css" />
-
<script src="#{blog.base_url}/javascripts/lightbox.js" type="text/javascript"></script>
-
HTML
-
end
-
end
-
end
-
end
-
1
class Typo
-
1
class Textfilter
-
1
class Markdown < TextFilterPlugin::Markup
-
1
plugin_display_name "Markdown"
-
1
plugin_description 'Markdown markup language from <a href="http://daringfireball.com/">Daring Fireball</a>'
-
-
1
def self.help_text
-
%{
-
[Markdown](http://daringfireball.net/projects/markdown/) is a simple text-to-HTML converter that
-
turns common text idioms into HTML. The [full syntax](http://daringfireball.net/projects/markdown/syntax)
-
is available from the author's site, but here's a short summary:
-
-
* **Paragraphs**: Start a new paragraph by skipping a line.
-
* **Italics**: Put text in *italics* by enclosing it in either \* or \_: `*italics*` turns into *italics*.
-
* **Bold**: Put text in **bold** by enclosing it in two \*s: `**bold**` turns into **bold**.
-
* **Pre-formatted text**: Enclosing a short block of text in backquotes (`) displays it in a monospaced font
-
and converts HTML metacharacters so they display correctly. Example: ``<img src="foo"/>`` displays as `<img src="foo"/>`.
-
Also, any paragraph indented 4 or more spaces is treated as pre-formatted text.
-
* **Block quotes**: Any paragraph (or line) that starts with a `>` is treated as a blockquote.
-
* **Hyperlinks**: You can create links like this: `[amazon's web site](http://www.amazon.com)`. That produces
-
"[amazon's web site](http://www.amazon.com)".
-
* **Lists**: You can create numbered or bulleted lists by ending a paragraph with a colon (:), skipping a line, and then using
-
asterisks (*, for bullets) or numbers (for numbered lists). See the
-
[Markdown syntax page](http://daringfireball.net/projects/markdown/syntax) for examples.
-
* **Raw HTML**: Markdown will pass raw HTML through unchanged, so you can use HTML's syntax whenever Markdown doesn't provide
-
a reasonable alternative.
-
-
}
-
end
-
-
1
def self.filtertext(blog,content,text,params)
-
# FIXME: Workaround for BlueCloth not interpreting <typo:foo> as an
-
# HTML tag. See <http://deveiate.org/projects/BlueCloth/ticket/70>.
-
98
escaped_macros = text.gsub(%r{(</?typo):}, '\1X')
-
98
html = BlueCloth.new(escaped_macros).to_html.gsub(%r{</?notextile>}, '')
-
98
html.gsub(%r{(</?typo)X}, '\1:')
-
end
-
end
-
end
-
end
-
1
class Typo
-
1
class Textfilter
-
1
class None < TextFilterPlugin::Markup
-
1
plugin_display_name "None"
-
1
plugin_description 'Raw HTML only'
-
-
1
def self.filtertext(blog,content,text,params)
-
18
text
-
end
-
end
-
end
-
end
-
1
class Typo
-
1
class Textfilter
-
1
class Smartypants < TextFilterPlugin::PostProcess
-
1
plugin_display_name "Smartypants"
-
1
plugin_description 'Converts HTML to use typographically correct quotes and dashes'
-
-
1
def self.filtertext(blog,content,text,params)
-
20
RubyPants.new(text).to_html
-
end
-
end
-
end
-
end
-
1
class Typo
-
1
class Textfilter
-
1
class Textile < TextFilterPlugin::Markup
-
1
plugin_display_name "Textile"
-
1
plugin_description 'Textile markup language'
-
-
1
def self.help_text
-
%{
-
See [_why's Textile reference](http://hobix.com/textile/).
-
}
-
end
-
-
1
def self.filtertext(blog,content,text,params)
-
450
RedCloth.new(text).to_html(:textile)
-
end
-
end
-
end
-
end
-
1
class Typo
-
1
class Textfilter
-
1
class TextileAndMarkdown < TextFilterPlugin::Markup
-
1
plugin_display_name "Textile with Markdown"
-
1
plugin_description 'Textile and Markdown markup languages'
-
-
1
def self.filtertext(blog,content,text,params)
-
RedCloth.new(text).to_html
-
end
-
end
-
end
-
end
-
# == Overview
-
#
-
# This module will extend the CGI module with methods to track the upload
-
# progress for multipart forms for use with progress meters. The progress is
-
# saved in the session to be used from any request from any server with the
-
# same session. In other words, this module will work across application
-
# instances.
-
#
-
# === Usage
-
#
-
# Just do your file-uploads as you normally would, but include an upload_id in
-
# the query string of your form action. Your form post action should look
-
# like:
-
#
-
# <form method="post" enctype="multipart/form-data" action="postaction?upload_id=SOMEIDYOUSET">
-
# <input type="file" name="client_file"/>
-
# </form>
-
#
-
# Query the upload state in a progress by reading the progress from the session
-
#
-
# class UploadController < ApplicationController
-
# def upload_status
-
# render :text => "Percent complete: " + @session[:uploads]['SOMEIDYOUSET'].completed_percent"
-
# end
-
# end
-
#
-
# === Session options
-
#
-
# Upload progress uses the session options defined in
-
# ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS. If you are passing
-
# custom session options to your dispatcher then please follow the
-
# "recommended way to change session options":http://wiki.rubyonrails.com/rails/show/HowtoChangeSessionOptions
-
#
-
# === Update frequency
-
#
-
# During an upload, the progress will be written to the session every 2
-
# seconds. This prevents excessive writes yet maintains a decent picture of
-
# the upload progress for larger files.
-
#
-
# User interfaces that update more often that every 2 seconds will display the same results.
-
# Consider this update frequency when designing your progress polling.
-
#
-
-
1
require 'cgi'
-
-
1
class CGI #:nodoc:
-
1
class ProgressIO < SimpleDelegator #:nodoc:
-
1
MIN_SAVE_INTERVAL = 1.0 # Number of seconds between session saves
-
-
1
attr_reader :progress, :session
-
-
1
def initialize(orig_io, progress, session)
-
@session = session
-
@progress = progress
-
-
@start_time = Time.now
-
@last_save_time = @start_time
-
save_progress
-
-
super(orig_io)
-
end
-
-
1
def read(*args)
-
data = __getobj__.read(*args)
-
-
if data and data.size > 0
-
now = Time.now
-
elapsed = now - @start_time
-
progress.update!(data.size, elapsed)
-
-
if now - @last_save_time > MIN_SAVE_INTERVAL
-
save_progress
-
@last_save_time = now
-
end
-
else
-
ActionController::Base.logger.debug("CGI::ProgressIO#read returns nothing when it should return nil if IO is finished: [#{args.inspect}], a cancelled upload or old FCGI bindings. Resetting the upload progress")
-
-
progress.reset!
-
save_progress
-
end
-
-
data
-
end
-
-
1
def save_progress
-
@session.update
-
end
-
-
1
def finish
-
@session.update
-
ActionController::Base.logger.debug("Finished processing multipart upload in #{@progress.elapsed_seconds.to_s}s")
-
end
-
end
-
-
1
module QueryExtension #:nodoc:
-
# Need to do lazy aliasing on the instance that we are extending because of the way QueryExtension
-
# gets included for each instance of the CGI object rather than on a module level. This method is a
-
# bit obtrusive because we are overriding CGI::QueryExtension::extended which could be used in the
-
# future. Need to research a better method
-
1
def self.extended(obj)
-
obj.instance_eval do
-
# unless defined? will prevent clobbering the progress IO on multiple extensions
-
alias :stdinput_without_progress :stdinput unless defined? stdinput_without_progress
-
alias :stdinput :stdinput_with_progress
-
end
-
end
-
-
1
def stdinput_with_progress
-
@stdin_with_progress or stdinput_without_progress
-
end
-
-
1
private
-
# Bootstrapped on UploadProgress::upload_status_for
-
1
def read_multipart_with_progress(boundary, content_length)
-
begin
-
begin
-
# Session disabled if the default session options have been set to 'false'
-
options = ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS
-
raise RuntimeError.new("Multipart upload progress disabled, no session options") unless options
-
-
options = options.stringify_keys
-
-
# Pull in the application controller to satisfy any dependencies on class definitions
-
# of instances stored in the session.
-
# Be sure to stay compatible with Rails 1.0/const_load!
-
if Object.const_defined?(:Controllers) and Controllers.respond_to?(:const_load!)
-
Controllers.const_load!(:ApplicationController, "application") unless Controllers.const_defined?(:ApplicationController)
-
else
-
require_dependency('application.rb') unless Object.const_defined?(:ApplicationController)
-
end
-
-
# Assumes that @cookies has already been setup
-
# Raises nomethod if upload_id is not defined
-
@params = CGI::parse(read_params_from_query)
-
upload_id = @params[(options['upload_key'] || 'upload_id')].first
-
raise RuntimeError.new("Multipart upload progress disabled, no upload id in query string") unless upload_id
-
-
upload_progress = UploadProgress::Progress.new(content_length)
-
-
session = Session.new(self, options)
-
session[:uploads] = {} unless session[:uploads]
-
session[:uploads].delete(upload_id) # in case the same upload id is used twice
-
session[:uploads][upload_id] = upload_progress
-
-
@stdin_with_progress = CGI::ProgressIO.new(stdinput_without_progress, upload_progress, session)
-
ActionController::Base.logger.debug("Multipart upload with progress (id: #{upload_id}, size: #{content_length})")
-
rescue
-
ActionController::Base.logger.debug("Exception during setup of read_multipart_with_progress: #{$!}")
-
end
-
ensure
-
begin
-
params = read_multipart_without_progress(boundary, content_length)
-
@stdin_with_progress.finish if @stdin_with_progress.respond_to? :finish
-
ensure
-
@stdin_with_progress = nil
-
session.close if session
-
end
-
end
-
params
-
end
-
-
# Prevent redefinition of aliases on multiple includes
-
1
unless private_instance_methods.include?("read_multipart_without_progress")
-
1
alias_method :read_multipart_without_progress, :read_multipart
-
1
alias_method :read_multipart, :read_multipart_with_progress
-
end
-
-
end
-
end
-
1
module UploadProgress #:nodoc:
-
# Upload Progress abstracts the progress of an upload. It's used by the
-
# multipart progress IO that keeps track of the upload progress and creating
-
# the application depends on. It contians methods to update the progress
-
# during an upload and read the statistics such as +received_bytes+,
-
# +total_bytes+, +completed_percent+, +bitrate+, and
-
# +remaining_seconds+
-
#
-
# You can get the current +Progress+ object by calling +upload_progress+ instance
-
# method in your controller or view.
-
#
-
1
class Progress
-
1
unless const_defined? :MIN_SAMPLE_TIME
-
# Number of seconds between bitrate samples. Updates that occur more
-
# frequently than +MIN_SAMPLE_TIME+ will not be queued until this
-
# time passes. This behavior gives a good balance of accuracy and load
-
# for both fast and slow transfers.
-
1
MIN_SAMPLE_TIME = 0.150
-
-
# Number of seconds between updates before giving up to try and calculate
-
# bitrate anymore
-
1
MIN_STALL_TIME = 10.0
-
-
# Number of samples used to calculate bitrate
-
1
MAX_SAMPLES = 20
-
end
-
-
# Number bytes received from the multipart post
-
1
attr_reader :received_bytes
-
-
# Total number of bytes expected from the mutlipart post
-
1
attr_reader :total_bytes
-
-
# The last time the upload history was updated
-
1
attr_reader :last_update_time
-
-
# A message you can set from your controller or view to be rendered in the
-
# +upload_status_text+ helper method. If you set a messagein a controller
-
# then call <code>session.update</code> to make that message available to
-
# your +upload_status+ action.
-
1
attr_accessor :message
-
-
# Create a new Progress object passing the expected number of bytes to receive
-
1
def initialize(total)
-
3
@total_bytes = total
-
3
reset!
-
end
-
-
# Resets the received_bytes, last_update_time, message and bitrate, but
-
# but maintains the total expected bytes
-
1
def reset!
-
3
@received_bytes, @last_update_time, @stalled, @message = 0, 0, false, ''
-
3
reset_history
-
end
-
-
# Number of bytes left for this upload
-
1
def remaining_bytes
-
@total_bytes - @received_bytes
-
end
-
-
# Completed percent in integer form from 0..100
-
1
def completed_percent
-
(@received_bytes * 100 / @total_bytes).to_i rescue 0
-
end
-
-
# Updates this UploadProgress object with the number of bytes received
-
# since last update time and the absolute number of seconds since the
-
# beginning of the upload.
-
#
-
# This method is used by the +MultipartProgress+ module and should
-
# not be called directly.
-
1
def update!(bytes, elapsed_seconds)#:nodoc:
-
if @received_bytes + bytes > @total_bytes
-
#warn "Progress#update received bytes exceeds expected bytes"
-
bytes = @total_bytes - @received_bytes
-
end
-
-
@received_bytes += bytes
-
-
# Age is the duration of time since the last update to the history
-
age = elapsed_seconds - @last_update_time
-
-
# Record the bytes received in the first element of the history
-
# in case the sample rate is exceeded and we shouldn't record at this
-
# time
-
@history.first[0] += bytes
-
@history.first[1] += age
-
-
history_age = @history.first[1]
-
-
@history.pop while @history.size > MAX_SAMPLES
-
@history.unshift([0,0]) if history_age > MIN_SAMPLE_TIME
-
-
if history_age > MIN_STALL_TIME
-
@stalled = true
-
reset_history
-
else
-
@stalled = false
-
end
-
-
@last_update_time = elapsed_seconds
-
-
self
-
end
-
-
# Calculates the bitrate in bytes/second. If the transfer is stalled or
-
# just started, the bitrate will be 0
-
1
def bitrate
-
history_bytes, history_time = @history.transpose.map { |vals| vals.inject { |sum, v| sum + v } }
-
history_bytes / history_time rescue 0
-
end
-
-
# Number of seconds elapsed since the start of the upload
-
1
def elapsed_seconds
-
@last_update_time
-
end
-
-
# Calculate the seconds remaining based on the current bitrate. Returns
-
# O seconds if stalled or if no bytes have been received
-
1
def remaining_seconds
-
remaining_bytes / bitrate rescue 0
-
end
-
-
# Returns true if there are bytes pending otherwise returns false
-
1
def finished?
-
remaining_bytes <= 0
-
end
-
-
# Returns true if some bytes have been received
-
1
def started?
-
@received_bytes > 0
-
end
-
-
# Returns true if there has been a delay in receiving bytes. The delay
-
# is set by the constant MIN_STALL_TIME
-
1
def stalled?
-
@stalled
-
end
-
-
1
private
-
1
def reset_history
-
3
@history = [[0,0]]
-
end
-
end
-
end
-
1
module UploadProgress
-
1
def self.append_features(base) #:nodoc:
-
1
super
-
1
base.extend(ClassMethods)
-
1
base.helper_method :upload_progress, :next_upload_id, :last_upload_id, :current_upload_id
-
end
-
-
# == Action Pack Upload Progress for multipart uploads
-
#
-
# The UploadProgress module aids in the process of viewing an Ajax driven
-
# upload status when working with multipart forms. It offers a macro that
-
# will prepare an action for handling the cleanup of the Ajax updating including
-
# passing the redirect URL and custom parameters to the Javascript finish handler.
-
#
-
# UploadProgress is available for all multipart uploads when the +upload_status_for+
-
# macro is called in one of your controllers.
-
#
-
# The progress is stored as an UploadProgress::Progress object in the session and
-
# is accessible in the controller and view with the +upload_progress+ method.
-
#
-
# For help rendering the UploadProgress enabled form and supported elements, see
-
# ActionView::Helpers::UploadProgressHelper.
-
#
-
# === Automatic updating on upload actions
-
#
-
# class DocumentController < ApplicationController
-
# upload_status_for :create
-
#
-
# def create
-
# # ... Your document creation action
-
# end
-
# end
-
#
-
# The +upload_status_for+ macro will override the rendering of the action passed
-
# if +upload_id+ is found in the query string. This allows for default
-
# behavior if Javascript is disabled. If you are tracking the upload progress
-
# then +create+ will now return the cleanup scripts that will terminate the polling
-
# of the upload status.
-
#
-
# === Customized status rendering
-
#
-
# class DocumentController < ApplicationController
-
# upload_status_for :create, :status => :custom_status
-
#
-
# def create
-
# # ... Your document creation action
-
# end
-
#
-
# def custom_status
-
# # ... Override this action to return content to be replaced in
-
# # the status container
-
# render :inline => "<%= upload_progress.completed_percent rescue 0 %> % complete", :layout => false
-
# end
-
#
-
# The default status action is +upload_status+. The results of this action
-
# are added used to replace the contents of the HTML elements defined in
-
# +upload_status_tag+. Within +upload_status+, you can load the Progress
-
# object from the session with the +upload_progress+ method and display your own
-
# results.
-
#
-
# Completion of the upload status updating occurs automatically with an +after_filter+ call to
-
# +finish_upload_status+. Because the upload must be posted into a hidden IFRAME to enable
-
# Ajax updates during the upload, +finish_upload_status+ overwrites the results of any previous
-
# +render+ or +redirect_to+ so it can render the necessary Javascript that will properly terminate
-
# the status updating loop, trigger the completion callback or redirect to the appropriate URL.
-
#
-
# ==== Basic Example (View):
-
#
-
# <%= form_tag_with_upload_progress({:action => 'create'}, {:finish => 'alert("Document Uploaded")'}) %>
-
# <%= upload_status_tag %>
-
# <%= file_field 'document', 'file' %>
-
# <%= end_form_tag %>
-
#
-
# ==== Basic Example (Controller):
-
#
-
# class DocumentController < ApplicationController
-
# upload_status_for :create
-
#
-
# def create
-
# @document = Document.create(params[:document])
-
# end
-
# end
-
#
-
# ==== Extended Example (View):
-
#
-
# <%= form_tag_with_upload_progress({:action => 'create'}, {}, {:action => :custom_status}) %>
-
# <%= upload_status_tag %>
-
# <%= file_field 'document', 'file' %>
-
# <%= submit_tag "Upload" %>
-
# <%= end_form_tag %>
-
#
-
# <%= form_tag_with_upload_progress({:action => 'add_preview'}, {:finish => 'alert(arguments[0])'}, {:action => :custom_status}) %>
-
# <%= upload_status_tag %>
-
# <%= submit_tag "Upload" %>
-
# <%= file_field 'preview', 'file' %>
-
# <%= end_form_tag %>
-
#
-
# ==== Extended Example (Controller):
-
#
-
# class DocumentController < ApplicationController
-
# upload_status_for :add_preview, :create, {:status => :custom_status}
-
#
-
# def add_preview
-
# @document = Document.find(params[:id])
-
# @document.preview = Preview.create(params[:preview])
-
# if @document.save
-
# finish_upload_status "'Preview added'"
-
# else
-
# finish_upload_status "'Preview not added'"
-
# end
-
# end
-
#
-
# def create
-
# @document = Document.new(params[:document])
-
#
-
# upload_progress.message = "Processing document..."
-
# session.update
-
#
-
# @document.save
-
# redirect_to :action => 'show', :id => @document.id
-
# end
-
#
-
# def custom_status
-
# render :inline => '<%= upload_progress_status %> <div>Updated at <%= Time.now %></div>', :layout => false
-
# end
-
#
-
# ==== Environment checklist
-
#
-
# This is an experimental feature that requires a specific webserver environment. Use the following checklist
-
# to confirm that you have an environment that supports upload progress.
-
#
-
# ===== Ruby:
-
#
-
# * Running the command `ruby -v` should print "ruby 1.8.2 (2004-12-25)" or older
-
#
-
# ===== Web server:
-
#
-
# * Apache 1.3, Apache 2.0 or Lighttpd *1.4* (need to build lighttpd from CVS)
-
#
-
# ===== FastCGI bindings:
-
#
-
# * > 0.8.6 and must be the compiled C version of the bindings
-
# * The command `ruby -e "p require('fcgi.so')"` should print "true"
-
#
-
# ===== Apache/Lighttpd FastCGI directives:
-
#
-
# * You must allow more than one FCGI server process to allow concurrent requests.
-
# * If there is only a single FCGI process you will not get the upload status updates.
-
# * You can check this by taking a look for running FCGI servers in your process list during a progress upload.
-
# * Apache directive: FastCGIConfig -minProcesses 2
-
# * Lighttpd directives taken from config/lighttpd.conf (min-procs):
-
#
-
# fastcgi.server = (
-
# ".fcgi" => (
-
# "APP_NAME" => (
-
# "socket" => "/tmp/APP_NAME1.socket",
-
# "bin-path" => "::Rails.root.to_s/public/dispatch.fcgi",
-
# "min-procs" => 2
-
# )
-
# )
-
# )
-
#
-
# ===== config/environment.rb:
-
#
-
# * Add the following line to your config/environment.rb and restart your web server.
-
# * <tt>ActionController::Base.enable_upload_progress</tt>
-
#
-
# ===== Development log:
-
#
-
# * When the upload progress is enabled by you will find something the following lines:
-
# * "Multipart upload with progress (id: 1, size: 85464)"
-
# * "Finished processing multipart upload in 0.363729s"
-
# * If you are properly running multiple FCGI processes, then you will see multiple entries for rendering the "upload_status" action before the "Finish processing..." log entry. This is a *good thing* :)
-
#
-
1
module ClassMethods
-
# Creates an +after_filter+ which will call +finish_upload_status+
-
# creating the document that will be loaded into the hidden IFRAME, terminating
-
# the status polling forms created with +form_with_upload_progress+.
-
#
-
# Also defines an action +upload_status+ or a action name passed as
-
# the <tt>:status</tt> option. This status action must match the one expected
-
# in the +form_tag_with_upload_progress+ helper.
-
#
-
1
def upload_status_for(*actions)
-
1
after_filter :finish_upload_status, :only => actions
-
-
1
define_method(actions.last.is_a?(Hash) && actions.last[:status] || :upload_status) do
-
render(:inline => '<%= upload_progress_status %>', :layout => false)
-
end
-
end
-
end
-
-
# Overwrites the body rendered if the upload comes from a form that tracks
-
# the progress of the upload. After clearing the body and any redirects, this
-
# method then renders the helper +finish_upload_status+
-
#
-
# This method only needs to be called if you wish to pass a
-
# javascript parameter to your finish event handler that you optionally
-
# define in +form_with_upload_progress+
-
#
-
# === Parameter:
-
#
-
# client_js_argument:: a string containing a Javascript expression that will
-
# be evaluated and passed to your +finish+ handler of
-
# +form_tag_with_upload_progress+.
-
#
-
# You can pass a String, Number or Boolean.
-
#
-
# === Strings
-
#
-
# Strings contain Javascript code that will be evaluated on the client. If you
-
# wish to pass a string to the client finish callback, you will need to include
-
# quotes in the +client_js_argument+ you pass to this method.
-
#
-
# ==== Example
-
#
-
# finish_upload_status("\"Finished\"")
-
# finish_upload_status("'Finished #{@document.title}'")
-
# finish_upload_status("{success: true, message: 'Done!'}")
-
# finish_upload_status("function() { alert('Uploaded!'); }")
-
#
-
# === Numbers / Booleans
-
#
-
# Numbers and Booleans can either be passed as Number objects or string versions
-
# of number objects as they are evaluated by Javascript the same way as in Ruby.
-
#
-
# ==== Example
-
#
-
# finish_upload_status(0)
-
# finish_upload_status(@document.file.size)
-
# finish_upload_status("10")
-
#
-
# === Nil
-
#
-
# To pass +nil+ to the finish callback, use a string "undefined"
-
#
-
# ==== Example
-
#
-
# finish_upload_status(@message || "undefined")
-
#
-
# == Redirection
-
#
-
# If you action performs a redirection then +finish_upload_status+ will recognize
-
# the redirection and properly create the Javascript to perform the redirection in
-
# the proper location.
-
#
-
# It is possible to redirect and pass a parameter to the finish callback.
-
#
-
# ==== Example
-
#
-
# redirect_to :action => 'show', :id => @document.id
-
# finish_upload_status("'Redirecting you to your new file'")
-
#
-
#
-
1
def finish_upload_status(client_js_argument='')
-
if not @rendered_finish_upload_status and params[:upload_id]
-
@rendered_finish_upload_status = true
-
-
#erase_render_results
-
#location = erase_redirect_results || ''
-
-
## TODO determine if #inspect is the appropriate way to marshall values
-
## in inline templates
-
-
template = "<%= finish_upload_status({"
-
template << ":client_js_argument => #{client_js_argument.inspect}, "
-
template << ":redirect_to => #{location.to_s.inspect}, "
-
template << "}) %>"
-
-
render({ :inline => template, :layout => false })
-
end
-
end
-
-
# Returns and saves the next unique +upload_id+ in the instance variable
-
# <tt>@upload_id</tt>
-
1
def next_upload_id
-
1
@upload_id = last_upload_id.succ
-
end
-
-
# Either returns the last saved +upload_id+ or looks in the session
-
# for the last used +upload_id+ and saves it as the intance variable
-
# <tt>@upload_id</tt>
-
1
def last_upload_id
-
16
@upload_id ||= ((session[:uploads] || {}).keys.map{|k| k.to_i}.sort.last || 0).to_s
-
end
-
-
# Returns the +upload_id+ from the query parameters or if it cannot be found
-
# in the query parameters, then return the +last_upload_id+
-
1
def current_upload_id
-
15
params[:upload_id] or last_upload_id
-
end
-
-
# Get the UploadProgress::Progress object for the supplied +upload_id+ from the
-
# session. If no +upload_id+ is given, then use the +current_upload_id+
-
#
-
# If an UploadProgress::Progress object cannot be found, a new instance will be
-
# returned with <code>total_bytes == 0</code>, <code>started? == false</code>,
-
# and <code>finished? == true</code>.
-
1
def upload_progress(upload_id = nil)
-
3
upload_id ||= current_upload_id
-
3
session[:uploads] && session[:uploads][upload_id] || UploadProgress::Progress.new(0)
-
end
-
end
-
1
module UploadProgress
-
# Provides a set of methods to be used in your views to help with the
-
# rendering of Ajax enabled status updating during a multipart upload.
-
#
-
# The basic mechanism for upload progress is that the form will post to a
-
# hidden <iframe> element, then poll a status action that will replace the
-
# contents of a status container. Client Javascript hooks are provided for
-
# +begin+ and +finish+ of the update.
-
#
-
# If you wish to have a DTD that will validate this page, use XHTML
-
# Transitional because this DTD supports the <iframe> element.
-
#
-
# == Typical usage
-
#
-
# In your upload view:
-
#
-
# <%= form_tag_with_upload_progress({ :action => 'create' }) %>
-
# <%= file_field "document", "file" %>
-
# <%= submit_tag "Upload" %>
-
# <%= upload_status_tag %>
-
# <%= end_form_tag %>
-
#
-
# In your controller:
-
#
-
# class DocumentController < ApplicationController
-
# upload_status_for :create
-
#
-
# def create
-
# # ... Your document creation action
-
# end
-
# end
-
#
-
# == Javascript callback on begin and finished
-
#
-
# In your upload view:
-
#
-
# <%= form_tag_with_upload_progress({ :action => 'create' }, {
-
# :begin => "alert('upload beginning'),
-
# :finish => "alert('upload finished')}) %>
-
# <%= file_field "document", "file" %>
-
# <%= submit_tag "Upload" %>
-
# <%= upload_status_tag %>
-
# <%= end_form_tag %>
-
#
-
#
-
# == CSS Styling of the status text and progress bar
-
#
-
# See +upload_status_text_tag+ and +upload_status_progress_bar_tag+ for references
-
# of the IDs and CSS classes used.
-
#
-
# Default styling is included with the scaffolding CSS.
-
1
module UploadProgressHelper
-
1
unless const_defined? :FREQUENCY
-
# Default number of seconds between client updates
-
1
FREQUENCY = 2.0
-
-
# Factor to decrease the frequency when the +upload_status+ action returns the same results
-
# To disable update decay, set this constant to +false+
-
1
FREQUENCY_DECAY = 1.8
-
end
-
-
# Contains a hash of status messages used for localization of
-
# +upload_progress_status+ and +upload_progress_text+. Each string is
-
# evaluated in the helper method context so you can include your own
-
# calculations and string iterpolations.
-
#
-
# The following keys are defined:
-
#
-
# <tt>:begin</tt>:: Displayed before the first byte is received on the server
-
# <tt>:update</tt>:: Contains a human representation of the upload progress
-
# <tt>:finish</tt>:: Displayed when the file upload is complete, before the action has completed. If you are performing extra activity in your action such as processing of the upload, then inform the user of what you are doing by setting +upload_progress.message+
-
#
-
1
@@default_messages = {
-
:begin => '"Upload starting..."',
-
:update => '"#{human_size(upload_progress.received_bytes)} of #{human_size(upload_progress.total_bytes)} at #{human_size(upload_progress.bitrate)}/s; #{distance_of_time_in_words(0,upload_progress.remaining_seconds,true)} remaining"',
-
:finish => 'upload_progress.message.blank? ? "Upload finished." : upload_progress.message',
-
}
-
-
-
# Creates a form tag and hidden <iframe> necessary for the upload progress
-
# status messages to be displayed in a designated +div+ on your page.
-
#
-
# == Initializations
-
#
-
# When the upload starts, the content created by +upload_status_tag+ will be filled out with
-
# "Upload starting...". When the upload is finished, "Upload finished." will be used. Every
-
# update inbetween the begin and finish events will be determined by the server +upload_status+
-
# action. Doing this automatically means that the user can use the same form to upload multiple
-
# files without refreshing page while still displaying a reasonable progress.
-
#
-
# == Upload IDs
-
#
-
# For the view and the controller to know about the same upload they must share
-
# a common +upload_id+. +form_tag_with_upload_progress+ prepares the next available
-
# +upload_id+ when called. There are other methods which use the +upload_id+ so the
-
# order in which you include your content is important. Any content that depends on the
-
# +upload_id+ will use the one defined +form_tag_with_upload_progress+
-
# otherwise you will need to explicitly declare the +upload_id+ shared among
-
# your progress elements.
-
#
-
# Status container after the form:
-
#
-
# <%= form_tag_with_upload_progress %>
-
# <%= end_form_tag %>
-
#
-
# <%= upload_status_tag %>
-
#
-
# Status container before form:
-
#
-
# <% my_upload_id = next_upload_id %>
-
#
-
# <%= upload_status_tag %>
-
#
-
# <%= form_tag_with_upload_progress :upload_id => my_upload_id %>
-
# <%= end_form_tag %>
-
#
-
# It is recommended that the helpers manage the +upload_id+ parameter.
-
#
-
# == Options
-
#
-
# +form_tag_with_upload_progress+ uses similar options as +form_tag+
-
# yet accepts another hash for the options used for the +upload_status+ action.
-
#
-
# <tt>url_for_options</tt>:: The same options used by +form_tag+ including:
-
# <tt>:upload_id</tt>:: the upload id used to uniquely identify this upload
-
#
-
# <tt>options</tt>:: similar options to +form_tag+ including:
-
# <tt>:begin</tt>:: Javascript code that executes before the first status update occurs.
-
# <tt>:finish</tt>:: Javascript code that executes after the action that receives the post returns.
-
# <tt>:frequency</tt>:: number of seconds between polls to the upload status action.
-
#
-
# <tt>status_url_for_options</tt>:: options passed to +url_for+ to build the url
-
# for the upload status action.
-
# <tt>:controller</tt>:: defines the controller to be used for a custom update status action
-
# <tt>:action</tt>:: defines the action to be used for a custom update status action
-
#
-
# Parameters passed to the action defined by status_url_for_options
-
#
-
# <tt>:upload_id</tt>:: the upload_id automatically generated by +form_tag_with_upload_progress+ or the user defined id passed to this method.
-
#
-
1
def form_tag_with_upload_progress(url_for_options = {}, options = {}, status_url_for_options = {}, *parameters_for_url_method)
-
-
## Setup the action URL and the server-side upload_status action for
-
## polling of status during the upload
-
-
1
options = options.dup
-
-
1
upload_id = url_for_options.delete(:upload_id) || next_upload_id
-
1
upload_action_url = url_for(url_for_options)
-
-
1
if status_url_for_options.is_a? Hash
-
1
status_url_for_options = status_url_for_options.merge({
-
:action => 'upload_status',
-
:upload_id => upload_id})
-
end
-
-
1
status_url = url_for(status_url_for_options)
-
-
## Prepare the form options. Dynamically change the target and URL to enable the status
-
## updating only if javascript is enabled, otherwise perform the form submission in the same
-
## frame.
-
-
1
upload_target = options[:target] || upload_target_id
-
1
upload_id_param = "#{upload_action_url.include?('?') ? '&' : '?'}upload_id=#{upload_id}"
-
-
## Externally :begin and :finish are the entry and exit points
-
## Internally, :finish is called :complete
-
-
1
js_options = {
-
:decay => options[:decay] || FREQUENCY_DECAY,
-
:frequency => options[:frequency] || FREQUENCY,
-
}
-
-
3
updater_options = '{' + js_options.map {|k, v| "#{k}:#{v}"}.sort.join(',') + '}'
-
-
## Finish off the updating by forcing the progress bar to 100% and status text because the
-
## results of the post may load and finish in the IFRAME before the last status update
-
## is loaded.
-
-
1
options[:complete] = "$('#{status_tag_id}').innerHTML='#{escape_javascript upload_progress_text(:finish)}';"
-
1
options[:complete] << "#{upload_progress_update_bar_js(100)};"
-
1
options[:complete] << "#{upload_update_object} = null"
-
1
options[:complete] = "#{options[:complete]}; #{options[:finish]}" if options[:finish]
-
-
1
options[:script] = true
-
-
## Prepare the periodic updater, clearing any previous updater
-
-
1
updater = "if (#{upload_update_object}) { #{upload_update_object}.stop(); }"
-
1
updater << "#{upload_update_object} = new Ajax.PeriodicalUpdater('#{status_tag_id}',"
-
1
updater << "'#{status_url}', Object.extend(#{options_for_ajax(options)},#{updater_options}))"
-
-
1
updater = "#{options[:begin]}; #{updater}" if options[:begin]
-
1
updater = "#{upload_progress_update_bar_js(0)}; #{updater}"
-
1
updater = "$('#{status_tag_id}').innerHTML='#{escape_javascript upload_progress_text(:begin)}'; #{updater}"
-
-
## Touch up the form action and target to use the given target instead of the
-
## default one. Then start the updater
-
-
1
options[:onsubmit] = "if (this.action.indexOf('upload_id') < 0){ this.action += '#{escape_javascript upload_id_param}'; }"
-
1
options[:onsubmit] << "this.target = '#{escape_javascript upload_target}';"
-
1
options[:onsubmit] << "#{updater}; return true"
-
1
options[:multipart] = true
-
-
7
[:begin, :finish, :complete, :frequency, :decay, :script].each { |sym| options.delete(sym) }
-
-
## Create the tags
-
## If a target for the form is given then avoid creating the hidden IFRAME
-
-
1
tag = form_tag(upload_action_url, options, *parameters_for_url_method)
-
-
1
unless options[:target]
-
tag << content_tag('iframe', '', {
-
:id => upload_target,
-
:name => upload_target,
-
:src => '',
-
:style => 'width:0px;height:0px;border:0'
-
1
})
-
end
-
-
1
tag
-
end
-
-
# This method must be called by the action that receives the form post
-
# with the +upload_progress+. By default this method is rendered when
-
# the controller declares that the action is the receiver of a
-
# +form_tag_with_upload_progress+ posting.
-
#
-
# This template will do a javascript redirect to the URL specified in +redirect_to+
-
# if this method is called anywhere in the controller action. When the action
-
# performs a redirect, the +finish+ handler will not be called.
-
#
-
# If there are errors in the action then you should set the controller
-
# instance variable +@errors+. The +@errors+ object will be
-
# converted to a javascript array from +@errors.full_messages+ and
-
# passed to the +finish+ handler of +form_tag_with_upload_progress+
-
#
-
# If no errors have occured, the parameter to the +finish+ handler will
-
# be +undefined+.
-
#
-
# == Example (in view)
-
#
-
# <script>
-
# function do_finish(errors) {
-
# if (errors) {
-
# alert(errors);
-
# }
-
# }
-
# </script>
-
#
-
# <%= form_tag_with_upload_progress {:action => 'create'}, {finish => 'do_finish(arguments[0])'} %>
-
#
-
1
def finish_upload_status(options = {})
-
# Always trigger the stop/finish callback
-
js = "parent.#{upload_update_object}.stop(#{options[:client_js_argument]});\n"
-
-
# Redirect if redirect_to was called in controller
-
js << "parent.location.replace('#{escape_javascript options[:redirect_to]}');\n" unless options[:redirect_to].blank?
-
-
# Guard against multiple triggers/redirects on back
-
js = "if (parent.#{upload_update_object}) { #{js} }\n"
-
-
content_tag("html",
-
content_tag("head",
-
content_tag("script", "function finish() { #{js} }",
-
{:type => "text/javascript", :language => "javascript"})) +
-
content_tag("body", '', :onload => 'finish()'))
-
end
-
-
# Renders the HTML to contain the upload progress bar above the
-
# default messages
-
#
-
# Use this method to display the upload status after your +form_tag_with_upload_progress+
-
1
def upload_status_tag(content='', options={})
-
upload_status_progress_bar_tag + upload_status_text_tag(content, options)
-
end
-
-
# Content helper that will create a +div+ with the proper ID and class that
-
# will contain the contents returned by the +upload_status+ action. The container
-
# is defined as
-
#
-
# <div id="#{status_tag_id}" class="uploadStatus"> </div>
-
#
-
# Style this container by selecting the +.uploadStatus+ +CSS+ class.
-
#
-
# The +content+ parameter will be included in the inner most +div+ when
-
# rendered.
-
#
-
# The +options+ will create attributes on the outer most div. To use a different
-
# +CSS+ class, pass a different class option.
-
#
-
# Example +CSS+:
-
# .uploadStatus { font-size: 10px; color: grey; }
-
#
-
1
def upload_status_text_tag(content=nil, options={})
-
content_tag("div", content, {:id => status_tag_id, :class => 'uploadStatus ui-progressbar-value ui-widget-header ui-corner-left'}.merge(options))
-
end
-
-
# Content helper that will create the element tree that can be easily styled
-
# with +CSS+ to create a progress bar effect. The containers are defined as:
-
#
-
# <div class="progressBar" id="#{progress_bar_id}">
-
# <div class="border">
-
# <div class="background">
-
# <div class="content"> </div>
-
# </div>
-
# </div>
-
# </div>
-
#
-
# The +content+ parameter will be included in the inner most +div+ when
-
# rendered.
-
#
-
# The +options+ will create attributes on the outer most div. To use a different
-
# +CSS+ class, pass a different class option.
-
#
-
# Example:
-
# <%= upload_status_progress_bar_tag('', {:class => 'progress'}) %>
-
#
-
# Example +CSS+:
-
#
-
# div.progressBar {
-
# margin: 5px;
-
# }
-
#
-
# div.progressBar div.border {
-
# background-color: #fff;
-
# border: 1px solid grey;
-
# width: 100%;
-
# }
-
#
-
# div.progressBar div.background {
-
# background-color: #333;
-
# height: 18px;
-
# width: 0%;
-
# }
-
#
-
1
def upload_status_progress_bar_tag(content='', options={})
-
css = [options[:class], 'progressBar'].compact.join(' ')
-
-
content_tag("div",
-
content_tag("div",
-
content_tag("div",
-
content_tag("div", content, :class => 'foreground'),
-
:class => 'background'),
-
:class => 'border'),
-
{:id => progress_bar_id}.merge(options).merge({:class => css}))
-
end
-
-
# The text and Javascript returned by the default +upload_status+ controller
-
# action which will replace the contents of the div created by +upload_status_text_tag+
-
# and grow the progress bar background to the appropriate width.
-
#
-
# See +upload_progress_text+ and +upload_progress_update_bar_js+
-
1
def upload_progress_status
-
"#{upload_progress_text}<script>#{upload_progress_update_bar_js}</script>"
-
end
-
-
# Javascript helper that will create a script that will change the width
-
# of the background progress bar container. Include this in the script
-
# portion of your view rendered by your +upload_status+ action to
-
# automatically find and update the progress bar.
-
#
-
# Example (in controller):
-
#
-
# def upload_status
-
# render :inline => "<script><%= update_upload_progress_bar_js %></script>", :layout => false
-
# end
-
#
-
#
-
1
def upload_progress_update_bar_js(percent=nil)
-
2
progress = upload_progress
-
percent ||= case
-
when progress.nil? || !progress.started? then 0
-
when progress.finished? then 100
-
else progress.completed_percent
-
2
end.to_i
-
-
# TODO do animation instead of jumping
-
2
"if($('#{progress_bar_id}')){$('#{progress_bar_id}').firstChild.firstChild.style.width='#{percent}%'}"
-
end
-
-
# Generates a nicely formatted string of current upload progress for
-
# +UploadProgress::Progress+ object +progress+. Addtionally, it
-
# will return "Upload starting..." if progress has not been initialized,
-
# "Receiving data..." if there is no received data yet, and "Upload
-
# finished" when all data has been sent.
-
#
-
# You can overload this method to add you own output to the
-
#
-
# Example return: 223.5 KB of 1.5 MB at 321.2 KB/s; less than 10 seconds
-
# remaining
-
1
def upload_progress_text(state=nil)
-
eval case
-
2
when state then @@default_messages[state.to_sym]
-
when upload_progress.nil? || !upload_progress.started? then @@default_messages[:begin]
-
when upload_progress.finished? then @@default_messages[:finish]
-
else @@default_messages[:update]
-
2
end
-
end
-
-
1
protected
-
# Javascript object used to contain the polling methods and keep track of
-
# the finished state
-
1
def upload_update_object
-
4
"document.uploadStatus#{current_upload_id}"
-
end
-
-
# Element ID of the progress bar
-
1
def progress_bar_id
-
4
"UploadProgressBar#{current_upload_id}"
-
end
-
-
# Element ID of the progress status container
-
1
def status_tag_id
-
3
"UploadStatus#{current_upload_id}"
-
end
-
-
# Element ID of the target <iframe> used as the target of the form
-
1
def upload_target_id
-
1
"UploadTarget#{current_upload_id}"
-
end
-
-
end
-
end
-
1
class XmlSidebar < Sidebar
-
1
display_name "XML Syndication"
-
1
description "RSS and Atom feeds"
-
-
1
setting :articles, true, :input_type => :checkbox
-
1
setting :comments, true, :input_type => :checkbox
-
1
setting :trackbacks, false, :input_type => :checkbox
-
1
setting :article_comments, true, :input_type => :checkbox
-
1
setting :category_feeds, false, :input_type => :checkbox
-
1
setting :tag_feeds, false, :input_type => :checkbox
-
-
1
setting :format, 'atom', :input_type => :radio,
-
:choices => [["rss", "RSS"], ["atom", "Atom"]]
-
-
1
def format_strip
-
strip_format = self.format
-
strip_format ||= 'atom'
-
strip_format.gsub!(/\d+/,'')
-
strip_format.gsub!('1.0', '')
-
strip_format.gsub!('2.0', '')
-
strip_format
-
end
-
-
end